2017-04-11 148 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