не удается отладить проект в omnisharp, даже с DebugType = portable или встроенным - PullRequest
0 голосов
/ 09 марта 2020

У меня есть файл .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"
    }
  ]
}
...