WPF应用引用.NET Core项目引发System.Runtime版本冲突问题求助
解决WPF(.NET Framework 4.7.1)引用.NET Core 2.0项目的CS1705版本冲突问题
这个错误我之前帮同事排查过好几次,本质就是程序集版本不兼容:你的WPF项目基于.NET Framework 4.7.1,它自带的System.Runtime版本是4.1.2.0,但你引用的.NET Core 2.0项目依赖的是更高版本的4.2.0.0,编译器就会因为版本不匹配抛出CS1705错误。
给你几个实用的解决办法,按优先级来试:
优先升级.NET Framework版本到4.7.2或更高
.NET Framework 4.7.2及后续版本对.NET Core/.NET Standard程序集的兼容性做了大幅优化,很多这类版本冲突问题会自动消失。操作步骤很简单:- 右键你的WPF项目 → 选择「属性」
- 在「应用程序」标签页里,找到「目标框架」下拉框,选择4.7.2或4.8(推荐4.8,是目前最稳定的.NET Framework版本)
- 保存设置后,清理并重建整个解决方案
如果不想升级框架,添加程序集绑定重定向
手动告诉.NET运行时,把对旧版本System.Runtime的请求重定向到4.2.0.0版本。打开WPF项目的App.config文件,在<configuration>节点内添加以下代码:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>保存文件后,清理解决方案再重新编译,一般就能解决这个版本冲突。
把.NET Core 2.0项目转为.NET Standard 2.0
.NET Standard是专门为跨框架共享代码设计的,.NET Framework 4.7.1完全支持.NET Standard 2.0,转为这个目标框架后,引用时的兼容性问题会少很多:- 右键你的.NET Core 2.0项目 → 「属性」
- 在「应用程序」标签页的「目标框架」下拉框里,选择「.NET Standard 2.0」
- 重建该项目后,重新引用到WPF项目中
最后检查NuGet包版本一致性
如果以上方法都没解决,打开解决方案的NuGet包管理器,检查所有项目中System.Runtime的版本,确保统一为4.2.0.0版本,避免不同项目引用不同版本导致冲突。
内容的提问来源于stack exchange,提问作者91378246




