【发布时间】:2016-05-03 13:42:28
【问题描述】:
我在 TeamCity 上有一个构建,它打包了一个 Web 项目以供以后部署,目前使用 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),但不幸的是,这些问题中提到的修复都没有对我有用。
我已经尝试过或已经尝试过的事情:
- 本地计算机(位于 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0)的 Web 和 WebApplication 目录已复制到构建服务器(它们一直存在)
- 已添加
<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\</TargetFrameworkSDKToolsDirectory>到Microsoft.Web.Publishing.AspNetCompileMerge.targets文件 - 在 MSBuild 命令中添加了
/p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\"
我对这个有点不知所措:几乎我唯一没有尝试过的就是在构建服务器上安装 Visual Studio,但如果可以的话,我真的很想避免这种情况(因为我认为必须在 CI 服务器上安装完整的 IDE 是荒谬的!)。
一些进一步的信息:
- 如果您将构建切换回 MSBuild 2013,一切都会继续正常运行(但显然,我们不想陷入过去)
- 我们有许多其他纯编译版本在 MSBuild 2015 上运行且没有错误
【问题讨论】:
-
你解决了吗?
-
恐怕不行;大约两天后,我只是举手并安装了 Visual Studio :(
-
@Richiban 你为什么要安装 VS2015 :) 解决方案就像这个答案stackoverflow.com/a/16694597/441301 中的“简单”:将
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14文件夹从开发机器复制到构建服务器,然后编辑@ 987654328@ 并在链接中添加<TargetFrameworkSDKToolsDirectory>。就我而言,我使用了 [...]v8.1A\bin\NETFX 4.5.1 工具,但如果你有 Windows 10 SDK,它也可以工作......对你来说太晚了,但也许它帮助别人。不再需要指定/p:AspnetMergePath;)
标签: c# msbuild visual-studio-2015 teamcity