2014-09-27 8 views
10

Tracing a project was easy in MSBuild 4.0/VS2010, आपको केवल रजिस्ट्री कुंजी सेट करना था जो एक msbuild/debug कमांड लाइन विकल्प सक्षम करता था। प्रोजेक्ट फ़ाइल की शुरुआत में डीबगर लॉन्च और ब्रेक होगा।MSBuild 12.0/VS2013 में प्रोजेक्ट फ़ाइल को डीबग कैसे करें?

एमएसबिल्ड 12 इसके लिए एक नया पर्यावरण चर प्रस्तुत करता है। कमांड प्रॉम्प्ट पर, MSBUILDDEBUGONSTART = 1 सेट करें और फिर MSBuild चलाएं (कोई कमांड लाइन स्विच नहीं)। यह डीबगर लॉन्च करता है, लेकिन कोई ब्रेक नहीं करता है। परियोजना सिर्फ वीएस के साथ पूरा होने के लिए चलाती है।

क्या मुझे कोई सेटिंग याद आ रही है? या यह (अनियंत्रित) सुविधा हटा दी गई है? मैं कम से कम डीबग ब्रेक में हार्ड कोडिंग द्वारा रुकने के लिए डीबगर प्राप्त करने में सक्षम था, लेकिन इससे मुझे प्रोजेक्ट फ़ाइल का पता लगाने में मदद नहीं मिलती है।

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 
     InitialTargets="Init"> 

    <UsingTask TaskName="LaunchDebugger" 
      TaskFactory="Microsoft.Build.Tasks.CodeTaskFactory" 
      AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll"> 
    <ParameterGroup /> 
    <Task> 
     <Using Namespace="System" /> 
     <Code Type="Fragment" Language="cs"> 
     <![CDATA[ 
      System.Console.WriteLine("Launching debugger..."); 
      System.Diagnostics.Debugger.Launch(); 
     ]]> 
     </Code> 
    </Task> 
    </UsingTask> 

    <UsingTask TaskName="DebugBreak" 
      TaskFactory="Microsoft.Build.Tasks.CodeTaskFactory" 
      AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll"> 
    <ParameterGroup /> 
    <Task> 
     <Using Namespace="System" /> 
     <Code Type="Fragment" Language="cs"> 
     <![CDATA[ 
      System.Diagnostics.Debugger.Break(); 
     ]]> 
     </Code> 
    </Task> 
    </UsingTask> 

    <Target Name="Init"> 
    <LaunchDebugger /> 
    <DebugBreak /> 
    </Target> 

... 
+0

फिर वही व्यक्ति जिसने हमें मूल रूप से इस सुविधा के बारे में बताया था? या तो सईद इब्राहिम हाशिमी या ब्रायन क्रेटज़लर। –

+0

आपको * ट्रेसिंग * के बजाय प्रसिद्ध और सही शब्द * डीबगिंग * का उपयोग करने के लिए अपने प्रश्न का नाम बदलना चाहिए ताकि अगर कोई जवाब आ जाए तो यह खोजने योग्य – stijn

+0

@ImaDirtyTroll क्या आपको कभी इसके लिए कोई समाधान मिला? – stijn

उत्तर

6

निम्नलिखित प्रमुख (रों) (ब्लॉग पोस्ट में महत्वपूर्ण पुराना हो चुका है) से (डेटा true के साथ) DebuggerEnabled रजिस्ट्री मान जोड़ें।

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\12.0 (64-बिट सिस्टम) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\12.0 (32-बिट प्रणाली, या अगर किसी भी तरह से चल रहा है MSBuild 64-बिट) भी

देखें:

+0

क्या कोई यह पुष्टि कर सकता है कि यह काम करता है? –

+1

एमएसबिल्ड 12.0 के लिए काम करता है, मेरे लिए 14.0 के लिए काम नहीं करता है। इसके बारे में कोई नया ज्ञान? –

+1

अच्छा सवाल। मैंने अभी इसे http://stackoverflow.com/q/42116865/704808 से पूछा है – weir

संबंधित मुद्दे