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

C#调用PowerShell脚本加载自定义DLL时提示找不到元数据文件

解决PowerShell驱动C#界面加载自定义DLL元数据缺失问题
  • 确认DLL架构与PowerShell运行环境匹配
    检查自定义DLL的编译架构(Any CPU/x86/x64),确保和当前PowerShell的运行架构一致。用[Environment]::Is64BitProcess命令可查看PowerShell是32位还是64位,对应调整DLL的编译目标平台。

  • 改用Add-Type加载程序集
    PowerShell中加载.NET DLL优先用Add-Type,它能自动处理元数据加载逻辑,示例:

    # 加载单个DLL
    Add-Type -Path "C:\Full\Path\To\YourCustom.dll"
    
    # 加载带依赖的DLL(依赖需在同一目录或指定完整路径)
    Add-Type -LiteralPath "C:\Path\To\Dep1.dll", "C:\Path\To\YourCustom.dll"
    

    若依赖DLL不在主DLL目录,可先注册程序集解析事件:

    $resolveHandler = [System.ResolveEventHandler]{
        $depDllPath = Join-Path "C:\Path\To\DependenciesFolder" "$($args[0].Name.Split(',')[0]).dll"
        if (Test-Path $depDllPath) {
            return [System.Reflection.Assembly]::LoadFrom($depDllPath)
        }
        return $null
    }
    [System.AppDomain]::CurrentDomain.add_AssemblyResolve($resolveHandler)
    
    # 再加载主DLL
    Add-Type -Path "C:\Path\To\YourCustom.dll"
    
  • 检查C#代码的命名空间与类访问权限
    在C#界面代码中确保正确引用自定义命名空间,比如using YourCustom.Namespace;,同时确认自研类的访问修饰符是public,否则外部无法访问。

  • 重新生成自定义DLL
    删除DLL项目的bin和obj目录,重新编译,确保生成的DLL无编译错误,元数据完整。若编译时有依赖警告,需先解决依赖问题。

  • 验证DLL完整性
    用.NET自带的ildasm.exe工具打开DLL,检查元数据是否能正常读取。如果工具无法解析DLL,说明文件损坏,需重新编译生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:10:37