Azure Functions项目无法加载NuGet包中的System.Memory.Data文件
Azure Functions: System.Memory.Data加载失败及'provider'参数为空问题解决
问题详情
整合旧WebJobs和Worker角色到新Azure Functions项目时,控制台持续抛出错误:
System.Private.CoreLib: 调用的目标发生了异常。Microsoft.Azure.WebJobs.Extensions.Storage.Queues: 无法加载文件或程序集'System.Memory.Data, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'。系统找不到指定的文件。
值不能为空。(参数 'provider')
环境参数:
- Visual Studio 17.11.5
- Azure Functions and Web Jobs工具 17.11.231.19466
- .NET 6.0
已尝试无效操作:
- 从头重建.NET 6.0项目,问题暂时解决后复发
- 测试多种NuGet包版本组合(Microsoft.Azure.WebJobs.Extensions.Storage 5.3.3、Microsoft.NET.Sdk.Functions 4.5.0)
- 替换为Microsoft.Azure.WebJobs.Extensions.Storage.Queues,无改善
可行解决建议
1. 显式安装指定版本的System.Memory.Data
直接在项目中安装错误提示的6.0.0版本包,强制引入该依赖:
Install-Package System.Memory.Data -Version 6.0.0
或者手动在项目.csproj文件中添加引用:
<PackageReference Include="System.Memory.Data" Version="6.0.0" />
2. 排查并修复NuGet依赖冲突
- 打开NuGet包管理器控制台,执行
Get-Package -ProjectName <你的项目名称>,查看所有包的依赖链,确认是否有其他包间接引用了不同版本的System.Memory.Data - 在解决方案级NuGet包管理界面,统一所有项目中System.Memory.Data的版本为6.0.0,消除版本不一致问题
3. 彻底清理重建项目
- 删除项目目录下的
bin和obj文件夹 - 在Visual Studio中依次执行「清理解决方案」→「重建解决方案」
- 清除NuGet缓存:通过「工具」→「选项」→「NuGet包管理器」→「常规」,点击「清除所有NuGet缓存」
4. 添加程序集绑定重定向
如果项目存在app.config或web.config,添加绑定重定向配置,确保程序集加载指向正确版本:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Memory.Data" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
5. 验证工具版本兼容性
尝试更新Azure Functions and Web Jobs工具到最新稳定版,或者回退到与.NET 6.0更匹配的旧版本,排查工具版本与NuGet包的兼容性问题。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

