Я пытаюсь открыть и собрать 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
, и я пропускаю устанавливаемый пакет?