我在TeamCity上有一个构建项目,用MSBuild 2013打包了一个网站项目,以备后续部署使用。最近我提交了一些代码,由于我使用了一些C#6的特性,导致构建错误。于是我尝试更改构建配置为MSBuild 2015,但出现了以下错误:
[Error] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132, 5): Can't find the valid AspnetMergePath
此错误在其他问题中也有提到过(例如这里:VS 2012 Publish: Can't find the valid AspnetMergePath),但不幸的是这些问题中提到的解决方法都没有对我起作用。
我已经尝试过或者已经存在的情况如下:
一些进一步的信息:
[Error] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132, 5): Can't find the valid AspnetMergePath
此错误在其他问题中也有提到过(例如这里:VS 2012 Publish: Can't find the valid AspnetMergePath),但不幸的是这些问题中提到的解决方法都没有对我起作用。
我已经尝试过或者已经存在的情况如下:
- 从本地机器的Web和WebApplication目录(位于C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0)复制到构建服务器(它们一直都在那里)
- 将C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\添加到Microsoft.Web.Publishing.AspNetCompileMerge.targets文件中
- 将/p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\"添加到MSBuild命令中
一些进一步的信息:
- 如果将构建切换回MSBuild 2013,一切都可以正常工作(虽然显然我们不想被困在过去)
- 我们还有许多其他纯编译的构建正在使用MSBuild 2015运行,没有错误
文件夹到构建服务器,然后编辑
Microsoft.Web.Publishing.AspNetConfigurationMerge.targets并添加
<TargetFrameworkSDKToolsDirectory>如链接中所示。在我的情况下,我使用了*[...]v8.1A\bin\NETFX 4.5.1 Tools*,但如果您有Windows 10 SDK也可以使用...对于您来说可能已经太晚了,但也许它能帮助其他人。不再需要指定
/p:AspnetMergePath` ;) - firepol