我正在尝试使用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/
。
答案 0 :(得分:1)
事实证明,每个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 Tools。奇怪的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/