Загрузка библиотеки 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.