2013-04-17 68 views
2

环境:在Windows Server 2012 VM上运行的TFS 2012生成代理。 .Net 4.0/.Net 4.5安装。 Windows SDK(http://msdn.microsoft.com/en-us/library/ms717422.aspx)也已安装。TFS 2012 Microsoft.WebApplication.targets

问题:构建代理无法构建.NET 4.0的Web应用程序使用VS 2012

,因为它无法解决网络目标的构建失败开发:

错误 中导入的项目“C:\ PROGRAM未找到文件(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基础架构团队并不热衷于在每个构建代理虚拟机上安装VS以获取定位包。

有没有人有任何想法,我可以解决这个问题?

回答

5

免责声明

我知道我下面提的是由很多开发OPS人所不齿的解决方案,但在我的经验,这是迄今为止最简单,最可靠的方式来解决这个问题。

解决方案

到目前为止对这一问题的最简单方法是您的构建服务器上安装Visual Studio 2012。我知道你说过基础设施团队并不热衷于这样做,但海事组织是最佳做法。我会试着概述下面的原因。

在您的构建服务器上安装Visual Studio看起来像是一件奇怪的事情,但是一直围绕着TFS块,我发现它是管理构建服务器的最简单方法。

您可以将文件(目标)从您的开发机器手动复制到您的构建服务器,但是如果Visual Studio的更新出来,您需要弄清楚发生了什么变化,并确保您也更新了所有这些文件。这些文件通常包括目标文件和关联的dll。

所有的扩展名,而现在是可用的软件包

而且,它只是更容易加载您的生成服务器上Visual Studio和安装不是试图找出什么是需要复制功能所需的软件包。

这是非常清楚最近对我说,当微软发布ASP.Net and Web Tools 2012.2。这改变了网站和Web项目的发布管道,我需要在我的TFS构建中使用它。只要能够登录到我的构建服务器,加载Visual Studio并下载新的更新,就变得非常容易。

我肯定会支持你的构建服务器上安装Visual Studio。

+0

+1在发布Service Pack时,Web应用程序和Web部署目标经常发生变化VS是管理这些依赖关系的最简单方法。 –

+3

对于如何安装VS2012减轻长期维护工作和防范可能的突发变化,您的意见使基础架构团队相信这是最好的发展方向。这些项目现在正在兴建。 感谢您抽出宝贵时间撰写此类详细的回复,并以我的具体案例为例进行备份。 – Trev

0

您的网络应用程序是用asp.net mvc编写的吗?在这种情况下,您可能需要在生成机器上安装asp.net mvc。 我在完全清洁的机器上运行构建代理程序时遇到同样的问题。安装该程序包后,构建代理程序设法构建应用程序。

希望有所帮助。

+0

嗨安德烈。是的,网络应用程序是一个MVC项目,但我没有测试你的理论作为discens的理由来证明VS 2012的安装是有说服力的 谢谢你的输入和为提供一个替代解决方案。 – Trev

+0

@Trev,如果您已经安装vs2012然后asp.net mvc的已安装了太反正,所以没有必要安装别的东西确实如此。很高兴你已经解决了你的问题。 –

0

这是可悲不得不以正确运行TFS 2012生成服务器上安装Visual Studio 2012。 这意味着这些功能(“C:\ Program Files文件(x86)的\的MSBuild \微软\ VisualStudio的\ 11.0 \ web应用\ Microsoft.WebApplication.targets ....)都错过了在2012年TFS感谢 的包装微软修改软件包;-)