【问题标题】:System.*.Http files not copied to the drop location by TFS 2015 build-agentTFS 2015 build-agent 未将 System.*.Http 文件复制到放置位置
【发布时间】:2016-10-26 17:20:33
【问题描述】:

编辑:提交这篇文章后,我发现了真正的问题:如果在 GAC 中找到了 .dll 'CopyLocal=true' 文件,MSBuild/TFSBuild 不会部署它们。在这种情况下,“System.net.http.formatting”dll 位于构建服务器上的 GAC 中。看herehere

从 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


【解决方案1】:
  1. 由于您已升级到 TFS 2015,建议使用与 XAML 构建完全不同的新构建系统。检查:https://www.visualstudio.com/en-us/docs/build/overview

  2. 您似乎仍在将引用的 dll 签入到 TFS,这是不建议的。相反,我们建议通过 NuGet 等包管理器恢复包。在网站 https://docs.nuget.org/ndocs/consume-packages/package-restore#msbuild-integrated-restore

  3. 上检查“迁移到自动恢复”
  4. 如果您开始使用新的构建系统,您可以简单地在任何构建任务之前的定义中包含恢复 NuGet 包任务。 Nuget包还原详细信息请查看https://docs.nuget.org/ndocs/consume-packages/package-restore

【讨论】:

  • 感谢您的回复。尽管升级到 XAML 版本已在我们的列表中,但目前它不是一个选项。我们有一个复杂的构建过程,包括定制的构建标签跟踪和部署应用程序。是否可以通过 XMAL 项目运行 NuGet?
  • 是的,检查选项 2。
猜你喜欢
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 2010-09-13
  • 2014-02-02
  • 1970-01-01
  • 2014-09-23
  • 2017-12-25
  • 1970-01-01
相关资源
最近更新 更多