【问题标题】:Powershell dll loadingPowershell dll加载
【发布时间】:2011-08-02 14:55:50
【问题描述】:

我有一个调用 C# 库中的方法的 Powershell 脚本。库 dll 加载为:

[Reflection.Assembly]::LoadFrom("$automationHome\dll\abc.dll") | Out-Null

现在,我的 C# 库在其中使用了另一个库 xyz.dll。我相信我不需要在 Powershell 脚本中加载它,因为 abc.dll 会解决它。但是,我收到一条错误消息:

无法加载文件或程序集 'xyz, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。这 系统找不到指定的文件。

谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: powershell .net-assembly


    【解决方案1】:

    LoadFrom() 最好在与abc.dll 相同的目录中查找xyz.dll

    如果您从与 dll 相同的目录运行脚本,请添加以下内容,然后执行 LoadFrom()

    $currentScriptDirectory = Get-Location
    [System.IO.Directory]::SetCurrentDirectory($currentScriptDirectory.Path)
    

    【讨论】:

    • 获取当前路径的替代方法是 $PWD。​​span>
    【解决方案2】:

    确保依赖 dll xyz 位于 LoadLibrary 将使用的路径中。我认为在您的情况下,这将是 powershell 脚本本地的任何内容、power shell 脚本的子目录中的任何内容,或者路径变量或 GAC 中的任何内容。

    【讨论】:

      【解决方案3】:

      几个想法:

      从 abc.dll(添加引用)对 xyz.dll 的引用是否将特定版本属性设置为 true(默认设置)并且您使用的是更高版本的 xyz.dll?

      对于某些程序集,使它们工作的唯一方法是将它们加载到 GAC 中。您可能想尝试将 xyz 加载到 GAC 中。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 2013-04-27
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 2020-03-19
      相关资源
      最近更新 更多