2

环境:在 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,只是为了获得目标包。

有人对我如何解决这个问题有任何想法吗?

4

3 回答 3

5

免责声明

我意识到我在下面提到的解决方案被很多开发人员所反对,但根据我的经验,它是迄今为止解决问题的最简单和最可靠的方法。

解决方案

到目前为止,此问题最简单的解决方案是安装Visual Studio 2012在您的构建服务器上。我知道你说过基础设施团队并不热衷于这样做,但 IMO 这是一个最佳实践。我将尝试在下面概述原因。

在您的构建服务器上安装 Visual Studio 似乎是一件奇怪的事情,但经过TFS一段时间后,我发现它是管理构建服务器的最简单方法。

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

此外,借助现在可用的所有扩展和包,在构建服务器上加载 Visual Studio 并安装所需的包比尝试找出复制功能所需的内容更容易。

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

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

于 2013-04-17T07:59:58.183 回答
0

您的 Web 应用程序是用 asp.net mvc 编写的吗?在这种情况下,您可能需要在构建机器上安装asp.net mvc 。在完全干净的机器上运行构建代理时,我遇到了同样的问题。安装该软件包后,构建代理设法构建了一个应用程序。

希望有帮助。

于 2013-04-17T07:48:13.557 回答
0

为了正确运行 TFS 2012,不得不在构建服务器上安装 Visual Studio 2012 很遗憾。这意味着在 TFS 2012 的包装中缺少这些功能(“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets ....)。感谢微软修改包;-)。

于 2013-10-28T16:22:14.963 回答