Newtonsoft.Json与NJsonSchema依赖冲突报CS1705错误如何解决?
问题原因
- 核心是传递依赖版本冲突+类库项目默认未开启程序集绑定重定向:
你使用的NJsonSchema 10.5.2版本,本身编译时依赖的是Newtonsoft.Json 12.0.0版本区间的包。虽然你在项目中显式引用了更高的13.0.1版本,但类库项目默认不会自动生成程序集绑定重定向规则,运行时NJsonSchema仍然会尝试加载12.0.0版本的Newtonsoft.Json,和你项目代码使用的13版本存在冲突,因此触发CS1705错误。 - 次要可能原因:你的项目依赖树中还存在其他未显式标注的第三方组件,同样依赖Newtonsoft.Json 12.0.0版本,进一步加剧了版本解析冲突。
解决方案
- 开启类库项目自动绑定重定向:在项目的
.csproj文件的<PropertyGroup>节点中添加以下配置即可:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
配置后重新生成项目,系统会自动生成绑定重定向规则,将所有Newtonsoft.Json的引用都指向你安装的13.0.1版本。
升级NJsonSchema版本:NJsonSchema从10.6.0版本开始已经原生支持Newtonsoft.Json 13,你可以直接将NJsonSchema升级到10.6.0或更高版本,从根源解决版本依赖不匹配问题。
手动添加绑定重定向:你也可以在类库项目中新增
app.config文件,手动添加Newtonsoft.Json的版本重定向规则:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
内容的提问来源于stack exchange,提问作者adriana malea
相关产品推荐
相关产品推荐

