加载System.Threading.Tasks.Extensions 4.2.0.0程序集失败求助
解决System.Threading.Tasks.Extensions程序集加载异常问题
以下是针对该问题的具体解决步骤:
1. 同步NuGet依赖版本
- 确保项目及单元测试项目中,
System.Threading.Tasks.Extensions、Azure.Identity和Azure.Messaging.ServiceBus包版本兼容。直接通过NuGet管理器更新所有相关包,优先匹配Azure SDK依赖的版本。 - 也可通过Package Manager Console执行命令更新:
Update-Package System.Threading.Tasks.Extensions Update-Package Azure.Identity Update-Package Azure.Messaging.ServiceBus
2. 添加程序集绑定重定向
在项目的App.config或Web.config中加入绑定重定向配置,强制应用使用当前安装的程序集版本,覆盖旧版本引用:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.5.4" /> <!-- 替换为你实际安装的版本号 --> </dependentAssembly> </assemblyBinding> </runtime>
注意:newVersion需替换为你项目中实际安装的System.Threading.Tasks.Extensions版本号,可在NuGet包管理器中查看具体版本。
3. 清理重建项目
- 右键项目选择「清理」,删除项目目录下的
bin和obj文件夹,彻底清除旧的编译文件。 - 重新生成项目,确保所有依赖项正确复制到输出目录。
4. 统一单元测试项目配置
单元测试项目需与主项目保持完全一致的NuGet包版本,同时在测试项目的配置文件中添加相同的程序集绑定重定向规则,避免测试环境依赖不匹配。
5. 简化Credential初始化代码
你代码中ManagedIdentityCredential的第二个参数默认即为null,可简化代码减少潜在参数问题:
private readonly ServiceBusSender _sender; private const string QUEUENAME = "test"; public QueueService() { var client = new ServiceBusClient( ConfigurationManager.AppSettings["ServiceBusNameSpace"], new ManagedIdentityCredential(clientId: ConfigurationManager.AppSettings["ManagedIdentityClientId"])); _sender = client.CreateSender(QUEUENAME); }
内容的提问来源于stack exchange,提问作者Anshul Sharma
相关产品推荐
相关产品推荐

