TFS 2013 Team Build无法还原所有NuGet包问题咨询
兄弟,我碰到过好几次和你一模一样的情况——本地Debug/Release都跑的顺顺的,NuGet还原也没问题,一签入TFS用默认模板构建就直接栽在第一个项目上。给你列几个最靠谱的排查方向和解决办法,大概率能搞定:
核对TFS构建代理的NuGet版本
本地用的NuGet版本(VS2017一般对应4.x系列,比如4.9.4)可能和TFS代理上的不一致。你可以在构建流程里新增一个「NuGet工具安装」步骤,指定和本地完全相同的NuGet版本,确保包还原和构建用的是同一套工具。确认NuGet包管理模式统一
要是解决方案里有的项目用PackageReference,有的还在用packages.config,这种混合模式很容易在CI环境出问题。先检查所有项目的包管理模式是否一致,然后在构建流程的NuGet还原步骤里,确保是针对整个解决方案执行还原,而非单个项目。清空TFS构建代理的缓存
代理本地的NuGet缓存或者构建缓存有时候会“卡壳”。你可以手动清理代理机器上的%LocalAppData%\NuGet\Cache文件夹,或者在构建流程里加一个命令行步骤,执行nuget locals all -clear来一键清空所有缓存,再重新执行还原和构建。检查构建任务的路径与权限
先确认TFS构建代理的服务账户有足够权限访问构建工作目录,还要避免工作目录有特殊字符或者过长路径。另外,构建任务里的「解决方案路径」要填准确,比如**\YourSolutionName.sln,确保能正确定位到解决方案文件。查看详细构建日志找线索
别只看表面的失败提示,把构建定义里的「日志详细程度」改成「详细」,重新跑一次构建。日志里会有更具体的错误细节——比如某个包还原超时、项目文件引用路径错误,或者MSBuild版本不匹配,这些细节能帮你快速锁定问题根源。指定正确的MSBuild版本
VS2017对应的MSBuild版本是15.x,TFS代理可能默认用的是旧版本(比如14.x)。你可以在构建流程的「MSBuild参数」里加上/p:VisualStudioVersion=15.0,或者在「工具版本」选项里直接选择VS2017对应的MSBuild版本。
内容的提问来源于stack exchange,提问作者Keith J

