无法导入“$(VSToolsPath)\...”

Could not import "$(VSToolsPath)\..."

我正在尝试使用 xbuild 在 Mono 上构建一个现有的 ASP.NET 解决方案,在我遇到的错误中,这是第一个(经过修剪和格式化以适合):

MyProj/OrderQueueJob/OrderQueueJob.csproj: error : 
MyProj/OrderQueueJob/OrderQueueJob.csproj: 
../packages/Microsoft.Web.WebJobs.Publish.1.0.2/tools/webjobs.targets: 
    Project file could not be imported, it was being imported by 
        MyProj/OrderQueueJob/OrderQueueJob.csproj: 
        MyProj/packages/Microsoft.Web.WebJobs.Publish.1.0.2/tools//webjobs.console.targets: 
        Project file could not be imported, it was being imported by 
            MyProj/packages/Microsoft.Web.WebJobs.Publish.1.0.2/tools/webjobs.targets: 
            MyProj/packages/Microsoft.Web.WebJobs.Publish.1.0.2/tools/webjobs.console.targets 
            could not import "$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets"

我不太了解构建 .NET 项目的内容,但很明显 VSToolsPath 似乎未设置,因此无法找到引用的文件(目标?)。在谷歌搜索时,我只遇到了较早的答案,其中提到在某些(现在是旧的)版本的 Mono 中,您需要将此文件夹从一个位置复制到下一个位置 - 这似乎是一个简单的遗漏。奇怪的是我的文件系统里好像有这个文件夹,但是找不到!

$ find /usr/local/Cellar/mono -iregex '.*VisualStudio.*Microsoft.WebApplication.targets'
/usr/local/Cellar/mono/4.2.2.30/lib/mono/xbuild/Microsoft/VisualStudio/v10.0/WebApplications/Microsoft.WebApplication.targets
/usr/local/Cellar/mono/4.2.2.30/lib/mono/xbuild/Microsoft/VisualStudio/v11.0/WebApplications/Microsoft.WebApplication.targets
/usr/local/Cellar/mono/4.2.2.30/lib/mono/xbuild/Microsoft/VisualStudio/v9.0/WebApplications/Microsoft.WebApplication.targets

什么给了?


显然 "MyProj" 是较长文件路径的精简版本,例如 /Users/John.Smith/projects/MyProj/.

原来我每个 version 一个文件夹 Visual Studio

ls /usr/local/Cellar/mono/4.2.2.30/lib/mono/xbuild/Microsoft/VisualStudio/
v     v10.0 v11.0 v12.0 v14.0 v9.0

正如您从我问题的输出中看到的那样,实际上只有其中一些具有 VS 工具。 Xamarin 忘记 VS2012 和 VS2015 很奇怪,但是哦,好吧。

当我将文件夹的最新现有版本复制到缺少它的文件夹时,问题就消失了:

MONO_VS_DIR=/usr/local/Cellar/mono/4.2.2.30/lib/mono/xbuild/Microsoft/VisualStudio
cp -r $MONO_VS_DIR/v11.0/WebApplications $MONO_VS_DIR/v12.0/
cp -r $MONO_VS_DIR/v11.0/WebApplications $MONO_VS_DIR/v14.0/