You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TFS 2017构建时无法找到Newtonsoft.Json等NuGet包问题求助

解决TFS 2017构建中NuGet包找不到及MSB3073错误的方案

你在TFS 2017构建时碰到的这两个错误,本质上都是NuGet包还原环节出了问题,我给你梳理几个针对性的解决步骤:

1. 先解决NuGet源为空的核心问题

从错误日志里能看到-source ""是空字符串,这直接导致NuGet不知道去哪里找包。你可以这么处理:

  • 直接修改构建脚本里的nuget.exe install命令:把空的-source ""替换成有效的源地址,比如官方源-source "https://api.nuget.org/v3/index.json";如果公司有私有NuGet源,用分号把多个源隔开就行,比如-source "https://api.nuget.org/v3/index.json;http://你的私有源地址/v3/index.json"
  • 或者给构建代理机器配置全局NuGet源:打开命令提示符,运行nuget sources add -name "nuget.org" -source "https://api.nuget.org/v3/index.json",后续构建会自动调用这个全局源

2. 确认指定的包版本是否真的存在

有些时候你要的版本可能已经被作者下架,或者一开始就没发布过:

  • 手动验证:打开NuGet包管理器(本地或在线搜索),搜Newtonsoft.Json,看看9.0.1版本是否存在。如果确实找不到,就修改项目里的packages.config,把版本号换成一个可用的稳定版本,比如9.0.2或者其他兼容版本

3. 修复NuGet.targets文件的配置错误

错误指向NuGet.targets(87,9),说明这个目标文件里的命令参数有问题:

  • 打开Core\Install\CSharp.nuget\NuGet.targets文件,定位到第87行附近的nuget.exe install命令,确保-source参数不是空值。你可以硬编码源地址,也可以用$(NuGetPackageSource)变量引用已配置的源
  • 另外检查-RequireConsent参数,如果不需要用户确认包还原,就改成-NoRequireConsent,避免构建过程中因为等待确认卡住

4. 清理缓存后重新还原包

缓存损坏也可能导致包找不到:

  • 在构建代理机器上,清空NuGet缓存:要么直接删除默认缓存目录C:\Users\[代理账户]\.nuget\packages,要么运行命令nuget locals all -clear一键清空所有缓存
  • 建议在TFS构建定义里添加专门的「NuGet还原」步骤,放在编译步骤之前执行,优先用TFS自带的NuGet任务,比自定义nuget.exe命令更可靠

5. 检查构建代理的网络权限

如果是内网环境的代理机器,可能没法访问外部NuGet源:

  • 先测试连通性:在代理机器上用浏览器打开https://api.nuget.org/v3/index.json,或者运行curl https://api.nuget.org/v3/index.json,确认能正常访问
  • 如果有防火墙或公司代理,给构建代理配置正确的网络代理,确保NuGet能正常下载包

内容的提问来源于stack exchange,提问作者SomewhatStudent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:28:15