You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.7.2下Azure Key Vault程序集加载失败求助

Azure Key Vault密钥检索的程序集加载问题

代码实现

我用以下代码从Azure Key Vault检索密钥:

var client = new SecretClient(new Uri(vaultBaseUrl), credential);
KeyVaultSecret secret = client.GetSecret(secretName);

项目依赖

  • Azure.Core - 1.40.0.0
  • Azure.Identity - 1.12.0
  • Azure.Security.KeyVault.Secrets - 4.6.0

app.config配置

<dependentAssembly>
<assemblyIdentity name="Azure.Core" publicKeyToken="92742159e12e44c8" 
  culture="neutral"/>
 <bindingRedirect oldVersion="0.0.0.0-1.40.0.0" newVersion="1.40.0.0"/>
 </dependentAssembly>
 <dependentAssembly>
   <assemblyIdentity name="Microsoft.Identity.Client" publicKeyToken="0a613f4dd989e8ae" 
  culture="neutral"/>
 <bindingRedirect oldVersion="0.0.0.0-4.61.3.0" newVersion="4.61.3.0"/>
 </dependentAssembly>
 <dependentAssembly>
 <assemblyIdentity name="Microsoft.Identity.Client.Extensions.Msal" 
  publicKeyToken="0a613f4dd989e8ae" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-4.61.3.0" newVersion="4.61.3.0"/>
 </dependentAssembly>

构建警告

Unified Dependency "Azure.Core, Version=1.40.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8".
Using this version instead of original version "1.37.0.0" in "..\bin\Debug\Azure.Security.KeyVault.Secrets.dll" because AutoUnify is 'true'.
Resolved file path is "..\bin\Debug\Azure.Core.dll".

运行时错误

执行client.GetSecret(secretName)时触发错误:

System.IO.FileLoadException: 'Could not load file or assembly
'Azure.Core, Version=1.37.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8' or one
of its dependencies. The located assembly's manifest definition does not match the
assembly reference. (Exception from HRESULT: 0x80131040)'

已尝试操作

尝试将Azure.Core降级到1.37.0.0,出现缺少1.36.0.0版本的错误;降级到1.36.0.0后,又出现缺少1.30.0.0版本的错误。


解决方案

  1. 修复程序集绑定重定向
    确认app.config中Azure.Core的绑定重定向范围覆盖所有旧版本,同时启用自动生成规则:

    • 保持现有重定向配置不变,右键项目→属性→应用程序→勾选自动生成绑定重定向,让Visual Studio自动处理版本冲突。
    • 若手动配置,确保oldVersion范围包含1.37.0.0(现有配置已覆盖,可保留)。
  2. 清理重建项目

    • 删除项目的bin和obj目录,清除残留的旧版本程序集
    • 执行nuget restore命令重新还原所有依赖
    • 重新构建项目
  3. 对齐依赖版本兼容性
    Azure.Security.KeyVault.Secrets 4.6.0对Azure.Core的最低依赖是1.37.0,1.40.0属于兼容版本。可尝试重新安装指定版本的依赖包:

    Install-Package Azure.Core -Version 1.40.0
    Install-Package Azure.Identity -Version 1.12.0
    Install-Package Azure.Security.KeyVault.Secrets -Version 4.6.0
    

    或直接更新到最新稳定版,确保所有Azure相关包版本匹配。

  4. 检查全局程序集缓存(GAC)
    使用gacutil /l Azure.Core命令查看GAC中是否存在旧版本Azure.Core,若有则用gacutil /u Azure.Core,Version=1.37.0.0卸载,避免加载冲突。

  5. 定位冲突源
    运行fuslogvw.exe(程序集绑定日志查看器),捕获详细的程序集加载日志,确定具体是哪个组件在请求1.37.0.0版本的Azure.Core,针对性解决。


内容的提问来源于stack exchange,提问作者ANR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:03:16