Visual Studio向TFS签入代码时出现System.Net.Http路径找不到错误求助
这个问题我之前帮同事处理过类似的,大概率是VS2017和旧NuGet配置的冲突,或者TFS本地工作区的缓存残留导致的。给你几个逐步排查的方向:
清理TFS工作区与VS本地缓存
先关闭Visual Studio,打开Team Explorer的「管理连接」→「工作区」,找到你的项目工作区,右键选择「高级→清理工作区」,勾选所有选项执行清理。另外手动删除项目目录下的.vs隐藏文件夹(需要先显示系统隐藏文件),这个文件夹里存着VS的本地缓存,经常会残留旧的引用信息。检查项目文件的残留引用
有时候卸载NuGet包后,.csproj文件里还会有硬编码的旧路径。右键项目选择「卸载项目」,再右键点击卸载后的项目选择「编辑.csproj」,搜索System.Net.Http相关的节点,比如包含<Reference Include="System.Net.Http"或者<HintPath>指向那个旧版本路径的行,全部删除后保存,再重新加载项目。同时检查packages.config文件(如果是旧版NuGet管理方式),删掉里面残留的System.Net.Http条目。重置NuGet包与配置
打开VS2017的「工具→选项→NuGet包管理器→常规」,确保「允许NuGet下载缺失的包」和「在构建时自动检查缺失的包」都已勾选。接着右键项目选择「管理NuGet包」,先卸载所有和System.Net.Http相关的包(包括依赖它的其他包),然后重新安装适配.NET4.0的稳定版本(尽量避免用2.0.20126这种老旧版本,选最新的兼容net40的版本)。清空本地NuGet缓存
打开命令提示符,运行以下命令清空所有本地NuGet缓存:nuget locals all -clear执行完成后重新打开项目,让NuGet重新下载所需的包,这样能避免缓存里的旧包干扰。
检查TFS服务器端构建配置(如果有自动构建)
如果签入操作会触发TFS服务器端构建,还要检查构建定义里的NuGet还原步骤,确保使用的NuGet版本正确,并且还原路径配置无误。必要时可以清理服务器上的NuGet缓存目录,避免旧版本包残留。
按照这个顺序排查,应该能定位到问题所在,大部分情况都是缓存或者项目文件残留的旧引用导致的。
内容的提问来源于stack exchange,提问作者JoelCool

