Отладка .NET Core с помощью VS Code - "Только 64-битные процессы можно отлаживать"

У меня нет VS 2017, и я буду строить веб-интерфейс в VS Code в любом случае, поэтому я хочу использовать VS Code.

Пока не появится .NET Standard 2.0, наши библиотеки также находятся в 4.6.1, поэтому я нацелен на net461 в моем .NET Core csproj:

<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.

Однако, когда я пытаюсь подключить или отладить это приложение с помощью VS Code, я получаю сообщение об ошибке

Не удалось подключиться к процессу: можно отлаживать только 64-битные процессы

Даже с консоли, а затем с очень простой конфигурацией:

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

И выбор процесса с этой ошибкой завершается. Я попытался создать exe-таргетинг на x64 с помощью:

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

Но он производит ту же ошибку. Кто-нибудь знает исправить? Кажется, потому, что я нацелен на net461, отлаживает .Net Core не поддерживает таргетинг на другие фреймворки?

Ответ 1

Версия 1.9.0 расширения ms-vscode.csharp добавила поддержку 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

Ответ 2

Ниже работало для меня:

  1. Перейти к переменным среды
  2. Выберите Изменить для системной переменной Path
  3. Переместите C:\Program Files\dotnet\entry вверх над C:\Program Files (x86)\dotnet\
  4. Нажмите ОК
  5. Закройте и снова запустите VS Code.

Ответ 3

Мне пришлось переустанавливать зависимости напрямую. Если вы использовали менеджер пакетов, например chocolatey, для установки зависимостей, таких как "azure-functions-core-tools" или "dotnet core", вам придется удалить их из Chocolatey и установить напрямую.