Azure ShareClient在一个项目正常运行另一项目抛出程序集加载异常
问题原因
这个报错属于典型的传递依赖版本冲突,触发逻辑如下:
你只给封装Azure逻辑的类库安装了Azure.Storage.Files.Shares 12.8.0,该包本身依赖特定版本的System.Runtime.CompilerServices.Unsafe。两个业务项目虽然没有直接安装Azure相关包,但调用类库时会间接依赖该程序集。两个业务项目本身的框架版本、其他已引用包的依赖版本存在差异,其中一个项目的依赖链里已经有了版本不匹配的System.Runtime.CompilerServices.Unsafe,就会触发清单不匹配的报错。
解决方案
- 优先采用解决方案级Nuget统一管理依赖:右键解决方案→管理解决方案的Nuget程序包,在
已安装标签找到System.Runtime.CompilerServices.Unsafe,勾选所有三个项目(类库+两个业务项目),统一安装同一个版本,优先选择报错提示的4.0.4.1版本,也可选择更高的兼容稳定版。 - 检查两个业务项目的配置文件(桌面项目是
app.config,Web项目是web.config),确认runtime节点下存在正确的程序集重定向规则,缺失则手动补充:
<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-你安装的最高版本号" newVersion="你统一安装的实际版本号" /> </dependentAssembly> </assemblyBinding> </runtime>
- 清理所有项目缓存:关闭Visual Studio,删除三个项目根目录下的
bin、obj文件夹,重新打开VS后右键解决方案→执行重新生成。 - 确认两个业务项目对封装类库的引用是项目引用,而非直接浏览选择dll引用,避免依赖传递失效。
内容的提问来源于stack exchange,提问作者Ben Gijsen
相关产品推荐
相关产品推荐

