2017-04-11 8 views
5

मेरे पास वीएस 2017 नहीं है, और मैं वीएस कोड में वेब फ्रंट-एंड का निर्माण कर रहा हूं, इसलिए मैं वीएस का उपयोग करना चाहता हूं कोड।वीएस कोड के साथ .NET कोर डीबगिंग - "केवल 64-बिट प्रक्रियाओं को डीबग किया जा सकता है"

तक नेट स्टैंडर्ड 2.0 बाहर आता है, हमारे पुस्तकालयों 4.6.1 में भी हैं, इसलिए मैं अपने नेट कोर csproj में net461 लक्ष्यीकरण हूँ:

<Project Sdk="Microsoft.NET.Sdk.Web"> 

    <PropertyGroup> 
    <TargetFramework>net461</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <Folder Include="wwwroot\" /> 
    </ItemGroup> 

    <ItemGroup> 
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" /> 
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" /> 
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" /> 
    </ItemGroup> 

</Project> 

परियोजना सरल dotnet new webapi स्टार्टर एप्लिकेशन है। मैं dotnet build और dotnet run के साथ निर्माण और चला सकता हूं। मुझे नवीनतम ms-vscode.csharp एक्सटेंशन 1.8.1 भी मिला है।

हालांकि, जब मैं अटैच या वी.एस. कोड के साथ इस आवेदन डिबगिंग कोशिश मैं त्रुटि

प्रक्रिया में संलग्न करने में असफल: केवल 64-बिट प्रक्रियाओं

भी से चल डिबग किया जा सकता है कंसोल, फिर बहुत सरल विन्यास के साथ संलग्न:

{ 
    "name": ".NET Core Attach", 
    "type": "coreclr", 
    "request": "attach", 
    "processId": "${command:pickProcess}" 
} 

और प्रक्रिया का चयन इस त्रुटि के साथ विफल रहता है। मैंने exe लक्ष्यीकरण x64 के साथ:

<PropertyGroup> 
    <TargetFramework>net461</TargetFramework> 
    <Platform>x64</Platform> 
</PropertyGroup> 

लेकिन यह वही त्रुटि उत्पन्न करता है। किसी को भी एक फिक्स पता है? ऐसा लगता है क्योंकि मैं नेट 461 को लक्षित कर रहा हूं, डीबगिंग करता हूं। नेट कोर अन्य ढांचे को लक्षित करने का समर्थन नहीं करता है?

+0

' ** आपके-ओएस-आईडी-यहां ** - x64' जोड़ने का प्रयास करें। ओएस विशिष्ट पहचानकर्ताओं की सूची के लिए https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog देखें – Tseng

+0

@ जो स्ट्रक्लिंग एक ही समस्या के साथ, क्या आप इसे ठीक कर सकते हैं? – nik

+0

@nik, x3ro का समाधान काम किया। रनटाइम पहचानकर्ता को win7-x64 पर सेट करना और कॉन्फ़िगरेशन में दाएं exe को लक्षित करना। – Joe

उत्तर

6

ms-vscode.csharp एक्सटेंशन का संस्करण 1.9.0 added डेस्कटॉप सीएलआर समर्थन।

अपने launch.json फ़ाइल को संशोधित करें:

"type" : "clr", 
"program" : "path to x64 version of the executable.exe" 

64 लक्षित करने के लिए है, इसलिए की तरह अपने .csproj फ़ाइल को संशोधित:

<PropertyGroup> 
    <TargetFramework>net461</TargetFramework> 
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier> 
</PropertyGroup> 

क्रम आईडी निर्दिष्ट करने के बाद एक उदाहरण कार्यक्रम पथ:

"program" : ${workspaceRoot}/src/bin/Debug/net461/win7-x64/example.exe 
+0

धन्यवाद, मैंने कार्यक्रम पथ से "win7-x64" को याद किया था और यह नेट 461 में पुराने संस्करण को इंगित कर रहा था। ध्यान दें, किसी और के लिए इसे पढ़ने के लिए, उस प्रकार "clr" को "coreclr" होना था। – Joe

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