【问题标题】:.NET Core debugging with VS Code - "Only 64-bit processes can be debugged".NET Core 使用 VS Code 调试 - “只能调试 64 位进程”
【发布时间】:2017-04-11 10:45:09
【问题描述】:

我没有 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不支持针对其他框架吗?

【问题讨论】:

  • 尝试添加&lt;RuntimeIdentifier&gt;**YOUR-OS-ID-HERE**-x64&lt;/RuntimeIdentifier&gt;。有关操作系统特定标识符的列表,请参阅 docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog
  • @Joe 遇到同样的问题,你能解决吗?
  • @nik,x3ro 的解决方案奏效了。将运行时标识符设置为 win7-x64 并在配置中定位正确的 exe。
  • Thx @Joe,在我的情况下,我错过了 .net 核心的 x86 sdk(已安装 x64)。仍然想知道为什么我收到该错误消息...

标签: asp.net-core visual-studio-code


【解决方案1】:

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

【讨论】:

  • 谢谢,我错过了程序路径中的“win7-x64”,它指向的是 net461 中的旧版本。请注意,对于其他阅读本文的人,“clr”类型必须是“coreclr”。
【解决方案2】:

以下对我有用:

  1. 转到环境变量
  2. 为路径系统变量选择编辑
  3. 将 C:\Program Files\dotnet\ 条目向上移动到 C:\Program Files (x86)\dotnet\
  4. 点击确定
  5. 关闭并重新启动 VS Code。

【讨论】:

  • 谢谢,它为我节省了很多时间
【解决方案3】:

在失去一天之后“该怎么办......”

  1. 这是我使用 UPDATE 移至版本 3 的步骤,因为它给了我“正在使用旧版本”

从第 2 版到第 3 版

你需要以管理员身份运行 CMD 如果你没有安装它可以跳到第 3 步


choco 升级 azure-functions-core-tools-3
  1. 我卸载它
    choco 卸载 azure-functions-core-tools-3

然后

真相的时刻 安装64位版本,可以调试,可以使用命令


choco install azure-functions-core-tools-3 --params="'/x64:true'"

BAM 工作

解决方法在第一条评论里

https://chocolatey.org/packages/azure-functions-core-tools-3#install

感谢 Tyler Doerksen 的救命稻草!!!!

【讨论】:

  • 非常感谢您找到解决方案!
【解决方案4】:

我不得不直接重新安装依赖项。如果您使用像 Chocolatey 这样的包管理器来安装“azure-functions-core-tools”或“dotnet core”等依赖项,则必须从 Chocolatey 中删除这些依赖项并直接安装。

【讨论】:

    【解决方案5】:

    如果您在您的机器上成功安装了 dotnet core cli ...检查安装文件夹是否安装在 programfiles(x86) 中您安装了 32 位版本的 dotnet cli .c# 扩展无法支持在 32 位版本中调试所以卸载dotnet cli 32 版本尝试安装 dotnet cli 64 位版本。如果您安装了 64 位版本的 'dotnet' 文件夹,在 'programfiles' 中创建,那么现在你可以开始了

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 2020-12-16
      • 2021-05-31
      • 2021-07-12
      • 1970-01-01
      相关资源
      最近更新 更多