System.*.Http 文件未被 TFS 2015 构建代理复制到放置位置
System.*.Http files not copied to the drop location by TFS 2015 build-agent
编辑:提交后 post 我确定了真正的问题:MSBuild/TFSBuild 不部署 .dll 'CopyLocal=true' 文件,如果它们在 GAC 中找到。在这种情况下,"System.net.http.formatting" dll 位于构建服务器上的 GAC 中。看here and here
从 TFS 2012 升级到 2015 后,生成代理不再将以下 DLL 复制到放置位置。我如何确定构建代理不复制这些文件的原因?
system.net.http.formatting, System.Web.Http.dll or System.Web.Http.WebHost.dll
详情
- 我们有引用上述 dll 的 MVC 项目的解决方案。
- .csproj 文件使用提示路径来引用解决方案
/packages/...
目录中的文件。我已确认路径有效:解决方案有一个包目录。
- 在升级到 TFS 2015 之前,在构建解决方案时,将上述文件复制到放置位置。但是他们不是在升级之后。
构建没有失败,但是在 TFS 2015 更新后目标 Web 服务器抛出 'file not found' 错误。 (MVC 没有也不能安装在目标 Web 服务器上)
构建使用 2012 XAML 构建定义
查看构建日志文件,两者都引用了 .dll 文件
CSC.exe ...
/reference:D:\B...\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll
构建日志显示,只有 TFS 2012 构建的版本会将 .dll 文件复制到放置位置。 2015年的构建日志没有类似下面的一行:
Copying file from "D:..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll" to "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 构建完全不同的新构建系统。检查:https://www.visualstudio.com/en-us/docs/build/overview
看来你还在把引用的dll签入TFS,不建议这样做。相反,我们建议通过 NuGet 等包管理器恢复包。在网站 https://docs.nuget.org/ndocs/consume-packages/package-restore#msbuild-integrated-restore
查看 "Migrating to automatic restore"
如果您开始使用新的构建系统,您只需在任何构建任务之前的定义中包含 Restore NuGet Packages 任务。 Nuget包还原的详细信息,请查看https://docs.nuget.org/ndocs/consume-packages/package-restore
编辑:提交后 post 我确定了真正的问题:MSBuild/TFSBuild 不部署 .dll 'CopyLocal=true' 文件,如果它们在 GAC 中找到。在这种情况下,"System.net.http.formatting" dll 位于构建服务器上的 GAC 中。看here and here
从 TFS 2012 升级到 2015 后,生成代理不再将以下 DLL 复制到放置位置。我如何确定构建代理不复制这些文件的原因?
system.net.http.formatting, System.Web.Http.dll or System.Web.Http.WebHost.dll
详情
- 我们有引用上述 dll 的 MVC 项目的解决方案。
- .csproj 文件使用提示路径来引用解决方案
/packages/...
目录中的文件。我已确认路径有效:解决方案有一个包目录。 - 在升级到 TFS 2015 之前,在构建解决方案时,将上述文件复制到放置位置。但是他们不是在升级之后。
构建没有失败,但是在 TFS 2015 更新后目标 Web 服务器抛出 'file not found' 错误。 (MVC 没有也不能安装在目标 Web 服务器上)
构建使用 2012 XAML 构建定义
查看构建日志文件,两者都引用了 .dll 文件
CSC.exe ... /reference:D:\B...\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll
构建日志显示,只有 TFS 2012 构建的版本会将 .dll 文件复制到放置位置。 2015年的构建日志没有类似下面的一行:
Copying file from "D:..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll" to "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 构建完全不同的新构建系统。检查:https://www.visualstudio.com/en-us/docs/build/overview
看来你还在把引用的dll签入TFS,不建议这样做。相反,我们建议通过 NuGet 等包管理器恢复包。在网站 https://docs.nuget.org/ndocs/consume-packages/package-restore#msbuild-integrated-restore
查看 "Migrating to automatic restore"
如果您开始使用新的构建系统,您只需在任何构建任务之前的定义中包含 Restore NuGet Packages 任务。 Nuget包还原的详细信息,请查看https://docs.nuget.org/ndocs/consume-packages/package-restore