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

运行Az模块命令后自定义C#命令集无法加载Azure程序集如何解决

解决自定义C# PowerShell命令集与Az模块的程序集版本冲突问题

问题根源

PowerShell默认在全局程序集加载上下文中加载所有依赖,先运行Az模块命令时,Az会优先加载它自身依赖的Azure.Core版本,该版本与你的自定义命令集依赖的1.15.0.0版本不匹配,导致后续加载自定义命令时找不到对应版本的程序集。

可行解决方案

方案1:添加程序集绑定重定向

在你的自定义命令集DLL同目录下,创建与DLL同名的配置文件,例如你的DLL名为MyAzureCmdlets.dll,则创建MyAzureCmdlets.dll.config,写入以下配置,将所有Azure.Core的版本请求重定向到你本地打包的版本:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Azure.Core" publicKeyToken="92742159e12e44c8" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.15.0.0" newVersion="1.15.0.0" />
      </dependentAssembly>
      <!-- 若有其他冲突的Azure程序集,可在此处添加更多dependentAssembly节点 -->
    </assemblyBinding>
  </runtime>
</configuration>

配置完成后重新导入模块即可生效。

方案2:对齐NuGet包版本与Az模块依赖

先查看你当前使用的Az.Accounts、Az.Storage模块依赖的Azure.Core版本,将你的C#项目中所有Azure相关NuGet包升级到与Az模块依赖版本一致,从根源消除版本冲突:

  1. 可在PowerShell中运行以下命令查看Az模块加载的Azure.Core版本:
(Get-Item (Get-Module Az.Accounts).Path).Directory.GetFiles("Azure.Core.dll").VersionInfo.ProductVersion
  1. 调整你C#项目的PackageReference版本与上述查询结果对齐后重新编译。

方案3:自定义程序集加载逻辑

在你的Cmdlet代码中添加AssemblyResolve事件处理,当程序集加载失败时,直接从你的模块安装目录加载对应程序集,跳过全局加载上下文的版本匹配:

using System.Reflection;
using System.IO;

// 在Cmdlet的静态构造函数中添加事件绑定
static YourCmdletClass()
{
    AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
    {
        var assemblyName = new AssemblyName(args.Name);
        if (assemblyName.Name == "Azure.Core")
        {
            // 可通过当前程序集路径动态获取模块目录下的Azure.Core.dll路径
            var dllPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Azure.Core.dll");
            return Assembly.LoadFrom(dllPath);
        }
        // 其他冲突程序集可在此处添加对应加载逻辑
        return null;
    };
}

方案4:使用独立加载上下文导入模块(仅PowerShell 7+支持)

导入自定义模块时使用独立的程序集加载上下文,完全隔离与Az模块的依赖:

Import-Module path/to/your/assembly.dll -CustomPSSnapIn

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:09:01