Вы могли установить транспорт, чтобы поставить почту Lamson. Существует предыдущее сообщение, которое могло помочь Вам.
Я использовал следующую настройку для загрузки пользовательского элемента управления csharp в PowerShell. Это позволяет настраивать и использовать элемент управления из PowerShell.
вот ссылка на блог
и вот ссылка на код проекта с исходным кодом
http://www.codeproject.com/Articles/311705/Custom-CSharp-Control-for-Powershell
Не могли бы вы окружить Add-Type
попыткой отлова и распечатать свойство LoaderExceptions, как того требует ошибка. Он может предоставить исключение с более подробным сообщением об ошибке.
try
{
Add-Type -Path "C:\rnd\CloudBerry.Backup.API.dll"
}
catch
{
$_.Exception.LoaderExceptions | %
{
Write-Error $_.Message
}
}
Исключения LoaderExceptions
скрыты внутри записи об ошибке. Если ошибка типа добавления была последней в списке ошибок, используйте $ Error [0] .InnerException.LoaderExceptions
, чтобы отобразить ошибки. Скорее всего, ваша библиотека зависит от другой, которая не была загружена. Вы можете либо Add-Type
для каждого, либо просто составить список и использовать аргумент -ReferencedAssemblies
для Add-Type
.
Я полагаю, теперь вы МОЖЕТ найти ответ на этот феномен. Я наткнулся на этот пост после того, как столкнулся с той же проблемой ... Я мог загрузить сборку и просмотреть типы, содержащиеся в сборке, но не смог создать ее экземпляр из статического класса. Было ли это EFTIDY. Приборка, EFTidyNet.TidyNet.Options что ли? Ooooo Weeee ... Проблемы ... проблемы ... это может быть что угодно. И просмотр статических методов и типов DLL ничего многообещающего не выявил. Теперь я впадал в депрессию. У меня он работал в скомпилированной программе C #, но для моего использования я хотел, чтобы он работал на языке с интерполяцией ... powershell.
Мое решение, которое я нашел, и оно все еще проверяется, но я в восторге и хотел поделиться этим.Создайте небольшое приложение console.exe, выполняющее интересующую меня функцию, а затем просмотрите его в том, что могло бы декомпилировать его или показать код IL. Я использовал рефлектор Red-Gate и надстройку генератора языка PowerShell и Wallah! он показал, что такое правильная строка конструктора! :-) Попытайся. и я надеюсь, что это сработает для тех, кто сталкивается с этой проблемой.
Я нашел эту связь: http://www.madwithpowershell.com/2013/10/add-type-vs-reflectionassembly-in.html
Он говорит, что ".LoadWithPartialName" было устарело. Поэтому вместо того, чтобы продолжать реализацию Add-Type этим методом, он использует статическую внутреннюю таблицу для перевода "частичного имени" в "полное имя". В приведенном в вопросе примере CloudBerry.Backup.API.dll
не имеет записи во внутренней таблице PowerShell, поэтому [System.Reflection.Assembly]::LoadFrom($dllpath)
работает. Она не использует таблицу для поиска частичного имени.
Некоторые из вышеперечисленных методов либо не работали для меня, либо были непонятны.
Вот что я использую для обертывания вызовов -AddPath и перехвата исключений LoaderExceptions:
try
{
Add-Type -Path "C:\path\to.dll"
}
catch [System.Reflection.ReflectionTypeLoadException]
{
Write-Host "Message: $($_.Exception.Message)"
Write-Host "StackTrace: $($_.Exception.StackTrace)"
Write-Host "LoaderExceptions: $($_.Exception.LoaderExceptions)"
}