Загрузка библиотеки DLL Powershell

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

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

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

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

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

3 ответов


LoadFrom() в идеале следует искать xyz.dll в папке abc.dll

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

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

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


пара идей:

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

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