Powershell dll loading - PullRequest
       7

Powershell dll loading

9 голосов
/ 02 августа 2011

У меня есть скрипт Powershell, который вызывает метод в библиотеке C #. Библиотека dll загружается как:

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

Теперь моя библиотека C # использует другую библиотеку xyz.dll. Я считаю, что мне не нужно загружать это в сценарии Powershell, так как abc.dll разрешит это. Однако я получаю сообщение об ошибке:

Не удалось загрузить файл или сборку 'xyz, версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null 'или одна из ее зависимостей. система не может найти указанный файл.

Может кто-нибудь подсказать, пожалуйста, как это исправить?

Ответы [ 3 ]

7 голосов
/ 02 августа 2011

LoadFrom() в идеале должен искать xyz.dll в том же каталоге, что и abc.dll

Если вы запускаете скрипт из той же директории, что и dll, добавьте нижеприведенное и затем выполните LoadFrom()

$currentScriptDirectory = Get-Location
[System.IO.Directory]::SetCurrentDirectory($currentScriptDirectory.Path)
1 голос
/ 02 августа 2011

Убедитесь, что зависимость dll xyz находится в пути, который будет использовать LoadLibrary. Я думаю, что в вашем случае это будет что-нибудь локальное для скрипта powershell, что-нибудь в подкаталоге скрипта power shell или что-нибудь в переменной пути или в GAC.

0 голосов
/ 02 августа 2011

Пара идей:

Имеет ли ссылка на xyz.dll из abc.dll (добавить ссылку) заданное для свойства version значение true (настройка по умолчанию), и вы используете более позднюю версию xyz.dll?

Для некоторых сборок единственный способ заставить их работать - это загрузить их в GAC.Вы можете попробовать загрузить xyz в GAC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...