Сборка Omnisharp не может найти Microsoft.WebApplication.target, отсутствует папка xbuild? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь открыть и собрать Linnworks SDK https://github.com/LinnSystems/LinnworksNetSDK в VSCode на Fedora Linux.Я думаю, что моя проблема в том, что пакет не установлен или omnisharp не нашел инструментарий для сборки, но мне не хватает опыта работы с msbuild в Linux.

Я установил рекомендованное расширение C # для VSCode (работает на v1.16.1автором Omnisharp) и следовал инструкциям по установке для инструментов командной строки .NET https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger.md, которые дали мне следующие пакеты Fedora:

Installing:
 dotnet-sdk-2.1           x86_64  2.1.402-1  packages-microsoft-com-prod  111 M
Installing dependencies:
 aspnetcore-runtime-2.1   x86_64  2.1.4-1    packages-microsoft-com-prod   29 M
 dotnet-host              x86_64  2.1.4-1    packages-microsoft-com-prod   45 k
 dotnet-hostfxr-2.1       x86_64  2.1.4-1    packages-microsoft-com-prod  195 k
 dotnet-runtime-2.1       x86_64  2.1.4-1    packages-microsoft-com-prod   27 M
 dotnet-runtime-deps-2.1  x86_64  2.1.4-1    packages-microsoft-com-prod  2.8 k

Открытие папки Linnworks SDK в VSCode показало, что Omnisharp выполняет многокрасивая инициализация и шаги сборки до появления этой ошибки:

[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: /home/neek/workspace/LinnworksNetSDK/Linnworks/Example Applications/PluggableComponent/dotnet/Application/Application.csproj
[warn]: OmniSharp.MSBuild.ProjectManager
        Failed to load project file '/home/neek/workspace/LinnworksNetSDK/Linnworks/Example Applications/PluggableComponent/dotnet/Application/Application.csproj'.
/home/neek/workspace/LinnworksNetSDK/Linnworks/Example Applications/PluggableComponent/dotnet/Application/Application.csproj(1,1)
Microsoft.Build.Exceptions.InvalidProjectFileException: The imported project "/home/neek/.vscode/extensions/ms-vscode.csharp-1.16.1/.omnisharp/1.32.5/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/WebApplications/Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  /home/neek/workspace/LinnworksNetSDK/Linnworks/Example Applications/PluggableComponent/dotnet/Application/Application.csproj

Таким образом, при загрузке Application.csproj он не может найти Microsoft.WebApplication.targets в ожидаемом месте.Файл .csproj содержит:

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

Он разрешает VSToolsPath в /home/neek/.vscode/extensions/ms-vscode.csharp-1.16.1/.omnisharp/1.32.5/lib/mono/xbuild/Microsoft/VisualStudio/v15.0, что, конечно же, не существует, мои каталоги в .vscode заканчиваются в папке mono:

$ ls ~/.vscode/extensions/ms-vscode.csharp-1.16.1/.omnisharp/1.32.5/lib/mono
4.5  gac

Я понятия не имею, откуда должна появиться папка xbuild, поэтому я попытался найти возможные места:

$ locate Microsoft.WebApplication.targets
/usr/lib/mono/xbuild/Microsoft/VisualStudio/v10.0/WebApplications/Microsoft.WebApplication.targets
/usr/lib/mono/xbuild/Microsoft/VisualStudio/v11.0/WebApplications/Microsoft.WebApplication.targets
/usr/lib/mono/xbuild/Microsoft/VisualStudio/v12.0/WebApplications/Microsoft.WebApplication.targets
/usr/lib/mono/xbuild/Microsoft/VisualStudio/v14.0/WebApplications/Microsoft.WebApplication.targets
/usr/lib/mono/xbuild/Microsoft/VisualStudio/v9.0/WebApplications/Microsoft.WebApplication.targets

Итак, у меня есть xbuild и требуемый Microsoft.WebApplication.targets, только не в ожидаемом месте.Я попытался жестко запрограммировать путь к моим инструментам в .csproj, заменив другое определение для него в PropertyGroup:

<VSToolsPath>/usr/lib/mono/xbuild/Microsoft/VisualStudio/v14.0</VSToolsPath>

Но перезагрузив рабочее пространство, сборка выглядела так же, как и раньше, как если быон полностью игнорирует мой VSToolsPath.

Кто-нибудь может подсказать, что попробовать дальше?Должен ли я пытаться указать VSToolsPath где-то еще, чтобы найти xbuild в моей системе, или xbuild должен находиться в ожидаемом месте под .vscode, и я пропускаю устанавливаемый пакет?

...