0

我正在尝试在 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,但我缺少可安装的包?

4

0 回答 0