Консоль netcore 3 VS 2019 C # не отлаживается - PullRequest
1 голос
/ 29 октября 2019

ОС: Windows 10 Enterprise 10.0.18362

IDE: Visual Studio 2019 Community Edition Версия 16.3.6

NET Базовая версия: 3.0.100 Фиксация: 04339c3a26

Что делать: Создать простое консольное приложение .NET Core 3 в VS2019, переключить целевую платформу на x86 и нажать «F5».

Затем 2 варианта:

  1. .NET Core 3 любые версии, установленные в системе (все комбинации x86, x64, обе). Переменная среды «путь» для x86 перемещена вверх, и «dotnet --info» показывает, что она нацелена на версию x86:

Ошибка: The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core. The program '[18492] dotnet.exe' has exited with code -2147450751 (0x80008081).

PS В этом случае эта ошибка также отображается при переключении на целевую платформу x64. Но все работает хорошо, когда работает как AnyCPU.

Любая установленная версия .NET Core и удаленная переменная среды для версии x86 перенесены ниже версии x64

Ошибка: IDE не может найти версию dotnet.exe для x86в программных файлах (x86)

Информация для x86 и x64 версий dotnet:

.NET Core SDK (reflecting any global.json):
 Version:   3.0.100
 Commit:    04339c3a26

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18362
 OS Platform: Windows
 RID:         win10-x86
 Base Path:   C:\Program Files (x86)\dotnet\sdk\3.0.100\

Host (useful for support):
  Version: 3.0.0
  Commit:  7d57652f33

.NET Core SDKs installed:
  3.0.100 [C:\Program Files (x86)\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.App 3.0.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 3.0.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.WindowsDesktop.App]
.NET Core SDK (reflecting any global.json):
 Version:   3.0.100
 Commit:    04339c3a26

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18362
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.0.100\

Host (useful for support):
  Version: 3.0.0
  Commit:  7d57652f33

.NET Core SDKs installed:
  2.1.509 [C:\Program Files\dotnet\sdk]
  2.2.103 [C:\Program Files\dotnet\sdk]
  3.0.100 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Должен сказать, что версия x86 скомпилированного консольного приложенияхорошо работает, если вы запускаете EXE-файл. Просто не могу запустить его в отладке от VS 2019. Если переключиться на AnyCPU / x64

1 Ответ

0 голосов
/ 09 ноября 2019

Я также использую Visual Studio 2019 (16.3.8) и получил аналогичную ошибку при попытке отладки с целевым x86 (но проектом netcoreapp2.0):

C:\Program Files\dotnet\dotnet.exe (process 40168) exited with code -532462766. 
To automatically close the console when debugging stops, enable Tools->Options- 
>Debugging->Automatically close the console when debugging stops.
Press any key to close this window . . .

Если я правильно помню,это работало из коробки с Visual Studio 2017, и после установки VS 2019 VS 2017 также начал вести себя так же. Смешно, что VS не может определить целевую платформу и запустить соответствующий файл dotnet.exe соответственно.

К счастью, исправить это довольно просто, добавьте этот параметр в ваш проект:

<PropertyGroup>
  <RunCommand Condition=" '$(Platform)' == 'x86' ">$(MSBuildProgramFiles32)\dotnet\dotnet</RunCommand>
</PropertyGroup>

Так что при отладке, если ваша текущая цель - x86, она будет использовать C: \ ProgramФайлы (x86) \ dotnet \ dotnet.exe и для других (настройка по умолчанию) будут использовать C: \ Program Files \ dotnet \ dotnet.exe

Конечно, вы должныСначала убедитесь, что у вас есть .NET Core X86 SDK.

Более подробные настройки (дополнительные условия) см. здесь: https://github.com/dotnet/cli/issues/7532#issuecomment-330706524

Хотя простая настройка, приведенная выше, хорошо работает для отладки обоихx86 и AnyCPU.

...