我正在尝试在 Fedora Linux 上的 VSCode 中打开和构建 Linnworks SDK https://github.com/LinnSystems/LinnworksNetSDK。我认为我的问题是没有安装包或者omnisharp没有找到构建工具,但是我缺乏在Linux上的msbuild经验。
我为 VSCode 安装了推荐的 C# 扩展(由 Omnisharp 提供支持的 v1.16.1),并按照 .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
在 VSCode 中打开 Linnworks SDK 文件夹显示 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
,但我缺少可安装的包?