.NET 4.8类库用Azure.Storage.Blobs时System.Buffers加载失败求助
解决方案
1. 确保绑定重定向配置在启动项目的app.config中
类库的app.config不会被CLR读取,只有最终启动的应用(如控制台、Web应用)的配置文件才生效。修改启动项目的app.config,扩大旧版本覆盖范围以包含4.0.2.0,指向你实际安装的System.Buffers版本(比如4.5.1):
<dependentAssembly> <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.5.1" /> </dependentAssembly>
2. 统一解决方案内的NuGet包版本
在解决方案根目录新建Directory.Packages.props文件,强制所有项目使用兼容的依赖版本,避免冲突:
<Project> <PropertyGroup> <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> </PropertyGroup> <ItemGroup> <PackageVersion Include="System.Buffers" Version="4.5.1" /> <PackageVersion Include="System.IO.Hashing" Version="8.0.0" /> <PackageVersion Include="System.Text.Encodings.Web" Version="8.0.0" /> <PackageVersion Include="System.Text.Json" Version="8.0.4" /> </ItemGroup> </Project>
保存后重新还原NuGet包,确保所有项目依赖版本一致。
3. 手动确保System.Buffers.dll存在于输出目录
- 找到NuGet安装的System.Buffers.dll路径(示例:
packages/System.Buffers.4.5.1/lib/net461/System.Buffers.dll) - 在AzureMain项目中添加该dll的引用,设置复制到输出目录为「始终复制」
- 重新生成项目,确保输出目录包含正确版本的System.Buffers.dll
4. 启用自动生成绑定重定向
在AzureMain和AzureWrapper项目的csproj文件中添加以下配置,自动生成正确的绑定重定向:
<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>
重新生成项目后,将输出目录中[项目名].dll.config里的绑定重定向节点,合并到启动项目的app.config中。
内容的提问来源于stack exchange,提问作者AKCoder
相关产品推荐
相关产品推荐

