BIMBase二次开发遇System.Runtime.CompilerServices.Unsafe版本冲突求助
解决System.Runtime.CompilerServices.Unsafe版本冲突问题
问题根源
你的项目里,BIMBase、FreeSql这两个依赖对System.Runtime.CompilerServices.Unsafe组件的版本要求不一致,导致运行时出现版本匹配错误。
可行解决方案
1. 配置程序集绑定重定向
在项目的app.config或web.config里添加绑定重定向规则,把所有对该组件的版本请求统一指向你实际安装的版本(选4.0.4.1或4.0.5.0其中一个即可)。
示例配置代码:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
- 注意:
oldVersion要覆盖所有可能的旧版本范围,newVersion设为你项目中实际引用的版本号。
2. 统一NuGet包版本
打开NuGet包管理器,把所有项目里的System.Runtime.CompilerServices.Unsafe包版本改成同一个(优先选较高的稳定版,比如4.0.5.0),确保整个依赖链都使用这个版本。
3. 适配BIMBase的依赖要求
查一下BIMBase的官方文档或依赖清单,确认它兼容的System.Runtime.CompilerServices.Unsafe版本,再调整FreeSql相关依赖适配这个版本;或者直接把BIMBase更到最新版,看是否已经修复了版本冲突问题。
4. 清理项目缓存
- 删除项目目录下的
bin和obj文件夹,重新编译项目。 - 执行
dotnet nuget locals all --clear命令清理NuGet本地缓存,之后重新恢复所有包。
内容的提问来源于stack exchange,提问作者Leonard
相关产品推荐
相关产品推荐

