【发布时间】:2016-10-26 17:20:33
【问题描述】:
编辑:提交这篇文章后,我发现了真正的问题:如果在 GAC 中找到了 .dll 'CopyLocal=true' 文件,MSBuild/TFSBuild 不会部署它们。在这种情况下,“System.net.http.formatting”dll 位于构建服务器上的 GAC 中。看here 和here
从 TFS 2012 升级到 2015 后,构建代理不再将以下 DLL 复制到放置位置。如何确定构建代理不复制这些文件的原因?
system.net.http.formatting、System.Web.Http.dll 或 System.Web.Http.WebHost.dll
详情
- 我们有引用上述 dll 的 MVC 项目的解决方案。
- .csproj 文件使用提示路径来引用解决方案
/packages/...目录中的文件。我已经确认路径是有效的:解决方案有一个包目录。 - 在升级到 TFS 2015 之前,在构建解决方案时,会将上述文件复制到放置位置。但是他们不是在升级之后。
构建不会失败,但是在 TFS 2015 更新后,目标 Web 服务器会引发“找不到文件”错误。 (MVC 没有也不能安装在目标 web 服务器上)
构建使用 2012 XAML 构建定义
-
查看构建日志文件,都引用了 .dll 文件
CSC.exe ... /reference:D:\B\15...\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll
-
构建日志显示只有 TFS 2012 构建的版本会将 .dll 文件复制到放置位置。 2015 年构建日志没有类似以下的行:
将文件从“D:..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll”复制到“D:..\BIN\EG .WS.EZScan.Web.Intranet\System.Net.Http.Formatting.dll
- 除了重新安装构建代理之外,升级期间构建服务器未更改。服务器没有重建。没有删除或添加任何组件。
- 项目未更新到较新版本的 MVC。项目参考版本
4.0.0.0。构建服务器上的 GACed 文件是版本4.0.0.0(文件版本4.0.20710.0)
我还应该看什么。
【问题讨论】:
-
您还在 TFS 2015 中使用 XAML 构建吗?为什么要将引用的 dll 复制到放置位置?
-
我们有一个定制的部署系统。我们在构建代理服务器上进行构建,并将内容推送到开发/测试/生产服务器。目标服务器可能没有安装相同的组件。顺便说一句,似乎新的 MS/Visual Studio 模式(尤其是核心)是在构建/部署时包含所有二进制文件,而不是依赖 GAC。希望 MS 在不久的将来解决这个问题。
标签: c# visual-studio tfs tfsbuild tfs-2015