环境:在Windows Server 2012 VM上运行的TFS 2012构建代理。 .Net 4.0 / .Net 4.5已安装。 Windows SDK(http://msdn.microsoft.com/en-us/library/ms717422.aspx)也已安装。
问题:构建代理无法构建使用VS 2012开发的.net 4.0 Web应用程序。
构建失败,因为它无法解析Web目标:
错误 找不到导入的项目“C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets”。确认声明中的路径是否正确,以及该文件是否存在于磁盘上。
然后是其他警告: 找不到框架“.NETFramework,Version = v4.0”的引用程序集。要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本。请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集。因此,您的程序集可能无法正确定位到您想要的框架。
我在这里搜索了.NET 4.0目标包:
http://msdn.microsoft.com/en-US/hh487283.aspx
但Windows Server 2012未列为受支持的平台。
IT基础架构团队并不热衷于在每个构建代理VM上安装VS,只是为了获得目标包。
有没有人对如何解决这个问题有任何想法?
答案 0 :(得分:5)
<强>声明强>
我意识到我在下面提到的解决方案被很多开发人员所厌恶,但根据我的经验,它是迄今为止解决问题最简单,最可靠的方法。
<强>解决方案强>
到目前为止,解决此问题的最简单方法是在构建服务器上安装Visual Studio 2012
。我知道你说基础设施团队并不热衷于这样做,但IMO是最佳实践。我将尝试概述下面的原因。
在构建服务器上安装Visual Studio似乎是一件奇怪的事情,但是我已经发现它是管理构建服务器的最简单方法。
您可以手动将文件(目标)从开发计算机复制到构建服务器,但如果对visual studio进行更新,则需要确定已更改的内容并确保更新所有这些文件。这些文件通常包括目标文件和相关的dll。
此外,对于现在可用的所有扩展和软件包,只需在构建服务器上加载Visual Studio并安装所需的软件包,而不是尝试找出复制功能所需的内容。
最近微软发布TFS
时,我对此非常清楚。这改变了网站和Web项目的发布管道,我需要在我的TFS构建中使用它。只需能够登录我的构建服务器,加载Visual Studio并下载新的更新就容易得多。
我肯定支持在构建服务器上安装Visual Studio。
答案 1 :(得分:0)
您的网络应用是用asp.net mvc编写的吗?在这种情况下,您可能需要在构建计算机上安装asp.net mvc。 在完全干净的机器上运行构建代理时遇到同样的问题。安装该软件包后,构建代理程序设法构建了一个应用程序。
希望有所帮助。
答案 2 :(得分:0)
这是可悲不得不以正确运行TFS 2012生成服务器上安装Visual Studio 2012。 这意味着在TFS 2012的包装中错过了这些功能(“C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets ....)”。 感谢Microsoft修改包; - )。