2017-04-11 98 views
5

我沒有VS 2017,我將在VS代碼中構建一個Web前端,因此我想使用VS碼。使用VS代碼進行.NET核心調試 - 「只能調試64位進程」

直到.NET 2.0標準出來,我們的圖書館也是4.6.1,所以我在我的.NET核心的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 builddotnet run構建和運行。我也有最新的ms-vscode.csharp擴展1.8.1。

然而,當我嘗試連接或與VS代碼調試這個應用程序,我得到的錯誤

無法連接到用戶的過程:只有64位進程可以調試

即使從運行控制檯,然後用非常簡單的配置安裝:

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

並選擇過程失敗,此錯誤。我試過用x64構建exe文件:

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

但是它會產生相同的錯誤。任何人都知道一個修復這似乎是因爲我的目標是net461,調試.Net Core不支持針對其他框架?

+0

嘗試添加' ** YOUR-OS-ID-HERE ** - x64'。請參閱https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog以獲取特定於操作系統的標識符列表 – Tseng

+0

@Joe與同樣的問題一起構建,你能解決它嗎? – nik

+0

@nik,x3ro的解決方案奏效。將運行時標識符設置爲win7-x64並將配置中的正確exe文件作爲目標。 – Joe

回答

6

版本1.9.0的ms-vscode.csharp擴展名爲added的桌面CLR支持。

修改您的launch.json文件:

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

要定位的X64,修改.csproj的文件,像這樣:

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

指定運行ID之後的示例程序路徑:

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

謝謝,我錯過了程序路徑中的「win7-x64」,它指向了net461中的舊版本。請注意,對於閱讀此內容的任何人,該類型「clr」必須是「coreclr」。 – Joe