Visual Studio误报RestSharp版本冲突,实际版本一致求解决方案
RestSharp版本冲突警告排查与解决建议
我在Visual Studio中维护一个包含两个项目的解决方案,两个项目均使用RestSharp库,NuGet包管理器显示二者版本均为106.15.0,但Visual Studio却提示RestSharp版本冲突警告,显示106.15.0.0与110.2.0.0版本存在冲突。我已确认两个项目的packages.config文件都正确列出了106.15.0版本。
警告详情如下:
Severity Code Description Project File Line Suppression State Details Warning Found conflicts between different versions of "RestSharp" that could not be resolved. There was a conflict between "RestSharp, Version=106.15.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75" and "RestSharp, Version=110.2.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75". "RestSharp, Version=106.15.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75" was chosen because it was primary and "RestSharp, Version=110.2.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75" was not. References which depend on "RestSharp, Version=106.15.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75" [C:\..REDACTED..\packages\RestSharp.106.15.0\lib\net452\RestSharp.dll]. C:\..REDACTED..\packages\RestSharp.106.15.0\lib\net452\RestSharp.dll Project file item includes which caused reference "C:\..REDACTED..\packages\RestSharp.106.15.0\lib\net452\RestSharp.dll". RestSharp, Version=106.15.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL References which depend on or have been unified to "RestSharp, Version=110.2.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75" []. C:\..REDACTED..\..SUBPROJECT..\bin\Debug\..SUBPROJECT_DLL Project file item includes which caused reference "C:\..REDACTED..\..SUBPROJECT..\bin\Debug\..SUBPROJECT_DLL". C:\..REDACTED..\..SUBPROJECT..\bin\Debug\..SUBPROJECT_DLL
我已尝试以下排查步骤:
- 清理并重建解决方案
- 手动删除两个项目的bin和obj文件夹
- 检查.csproj文件,未发现RestSharp旧版本引用
- 清理NuGet缓存
- 重启Visual Studio
用dotPeek检查两个项目生成的DLL,确认它们均引用RestSharp 106.15.0版本。虽然这只是警告且实际运行不受影响,但希望解决该问题以保持构建环境整洁。
解决建议
1. 排查间接依赖的高版本RestSharp
警告显示冲突来自子项目输出DLL,大概率是该子项目依赖的第三方包间接引用了RestSharp 110.2.0.0:
- 在Visual Studio中右键解决方案→管理NuGet程序包,切换到「已安装」标签,展开每个包的依赖树,检查是否有其他包依赖高版本RestSharp。
- 在NuGet包管理器控制台执行命令:
Get-Package -ProjectName [子项目名称] -IncludeAllVersions,查看该项目的完整依赖链。
2. 添加程序集绑定重定向
在启动项目的App.config或Web.config中添加绑定重定向,强制所有RestSharp引用统一到106.15.0.0版本:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="RestSharp" publicKeyToken="598062e77f915f75" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-110.2.0.0" newVersion="106.15.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
添加后清理重建解决方案,警告通常会消失。
3. 确认子项目的引用方式
检查子项目是否直接引用了本地RestSharp DLL(而非通过NuGet):
- 如果存在本地DLL引用,删除该引用,重新通过NuGet安装106.15.0版本。
4. 强制统一解决方案的NuGet包版本
右键解决方案→管理NuGet程序包,找到RestSharp包:
- 在右侧「版本」下拉框选择106.15.0,勾选所有项目,点击「安装」,强制所有项目使用同一版本。
5. 清理残留的旧版本文件
- 手动删除解决方案根目录下的
packages文件夹,然后执行NuGet包还原操作。 - 检查所有项目的输出目录(bin/Debug、bin/Release等),如果存在RestSharp 110.2.0.0的DLL,直接删除。
内容的提问来源于stack exchange,提问作者stanleykylee
相关产品推荐
相关产品推荐

