你是否在.NET 文件上传中遇到过令人头疼的引用错误?今天我们就来深入探讨如何解决 System.Runtime.CompilerServices.Unsafe 引用错误
1. 错误现象
- 在文件上传操作中,当处理特定文件格式(如.xlsx)时,代码workbook = new XSSFWorkbook (myfile.InputStream);出现异常。
- 异常信息为NPOI.POIXMLException,其内部异常是FileLoadException,提示未能加载文件或程序集 “System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture= neutral, PublicKeyToken= b03f5f7f11d50a3a” 或它的某一个依赖项,并且程序集清单定义与程序集引用不匹配(异常来自 HRESULT:0x80131040)。
2. 解决方法
- 对于开发.NET 应用且遇到此类程序集版本相关问题,可以在应用程序的配置文件(通常是app.config文件;如果是 Web 应用,则是web.config文件)中添加绑定重定向。
在 Web.config 配置文件中查看是否有以下代码,没有手动添上
用于指定程序集的版本绑定重定向。这段配置将System.Runtime.CompilerServices.Unsafe程序集的旧版本(从0.0.0.0到6.0.0.0)重定向到新版本6.0.0.0。这种做法可以确保应用程序在运行时加载正确的程序集版本,从而避免因不同版本之间的不兼容性而导致的问题。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> //定义了程序集绑定设置
<dependentAssembly> //指定了一个依赖的程序集
//元素标识了特定的程序集,这里是 “System.Runtime.CompilerServices.Unsafe”,通过名称、公钥标记、区域设置等信息来唯一确定
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
//元素用于重定向程序集的版本。这里将旧版本范围从 “0.0.0.0” 到 “6.0.0.0” 的引用重定向到新版本 “6.0.0.0”
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
标签:CompilerServices,0.0,程序,Unsafe,System,版本,Runtime
From: https://blog.csdn.net/2302_82029124/article/details/143339268