Home Articles

使用VS Code进行.NET Core调试 - “只能调试64位进程”

Asked
Viewed 169 times
9

我没有VS 2017,我将在VS Code中构建一个Web前端,所以我想使用VS Code .

在.NET Standard 2.0发布之前,我们的库也在4.6.1中,所以我在我的.NET Core 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 Code附加或调试此应用程序时,我收到错误

无法附加到进程:只能调试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不支持针对其他框架吗?

1 Answer

  • 10

    版本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>
    

    指定运行时标识后的示例程序路径:

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

Related