У меня есть файл .csproj, который я не могу отладить в VS Code с Omnisharp. В частности, когда я пытаюсь его отладить, он жалуется
ПРЕДУПРЕЖДЕНИЕ. Не удалось загрузить символы для «[имя сборки] .dll». 'C: \ Git \ [проект] \ [имя сборки] \ bin \ Debug \ net472 \ [имя сборки] .pdb' - это Windows PDB. Они не поддерживаются кроссплатформенным. NET Core отладчик. Загружен 'C: \ Git \ [project] \ TestRunner \ bin \ Debug \ net472 \ [имя сборки] .dll'. Не удается найти или открыть файл PDB.
Но я установил свой DebugType на переносимый. Мой файл .csproj выглядит следующим образом:
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<VS_INSTALL_DIR Condition=" '$(VS_INSTALL_DIR)' == '' ">C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional</VS_INSTALL_DIR>
<LangVersion>8.0</LangVersion>
<NullableContextOptions>enable</NullableContextOptions>
<!-- NullableContextOptions was renamed to Nullable, and as of 2019-07-30, dotnet build supports one and Visual Studio supports the other.
We should delete NullableContextOptions when we can -->
<Nullable>enable</Nullable>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<DocumentationFile>bin\$(Configuration)\net472\$(AssemblyName).XML</DocumentationFile>
<NoWarn>1591;1573</NoWarn>
<!-- warns when a public member is missing an XML comment, warns when some params have XML comments and others don't -->
<DebugType>portable</DebugType>
<EmbedAllSources>true</EmbedAllSources>
<DebugSymbols>true</DebugSymbols>
<Platforms>AnyCPU;x86</Platforms>
</PropertyGroup>
Я также пытался <DebugType>embedded</DebugType>
и удалял папки obj и bin, но я получаю точно такое же сообщение, за исключением того, что он ищет PDB в папка obj вместо папки bin. После сборки я вижу PDB в папке obj, но не в папке bin (ожидается, потому что она должна быть встроена в DLL), и кажется, что Omnisharp пытается загрузить obj / PDB вместо встроенного. И я думаю, что в папке obj находится в "полном" формате PDB?
(У меня изначально не было настроек EmbedAllSources
или DebugSymbols
, но я увидел сообщение SO, которое заставило меня подумать, что они могут быть необходимы. Я пробовал это без этих настроек с тем же результатом.)
Если это уместно, это смешанное решение C # / F #, и я могу загрузить символы для кода F # и других C# проектов в решении просто отлично. Каждый проект в решении имеет набор DebugType.
Редактировать:
Вот мой запуск. json и задачи. json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Launch (console)",
"type": "clr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/TestRunner/bin/Debug/net472/TestRunner.exe",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart"
},
]
}
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"TestRunner/TestRunner.fsproj"
],
"problemMatcher": "$msCompile"
}
]
}