Как использовать Add-Type для загрузки Microsoft.Web.Deployment?

Я пишу несколько сценариев PowerShell, которые используют MSDeploy API. Я могу загрузить сборку, используя

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Deployment")

Расположение находится в GAC:

PS > [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Deployment") | fl Location

Location : C:\Windows\assembly\GAC_MSIL\Microsoft.Web.Deployment\7.1.0.0__31bf3856ad364e35\Microsoft.Web.Deployment.dll

Однако я не могу загрузить сборку с помощью Add-Type. Я получаю сообщение об ошибке, что сборка не может быть найдена и что одна или несколько сборок отсутствуют.

PS > Add-Type -AssemblyName Microsoft.Web.Deployment
Add-Type : Cannot add type. The assembly 'Microsoft.Web.Deployment' could not be found.
At line:1 char:9
+ Add-Type <<<<  -AssemblyName Microsoft.Web.Deployment
    + CategoryInfo          : ObjectNotFound: (Microsoft.Web.Deployment:String) [Add-Type], Exception
    + FullyQualifiedErrorId : ASSEMBLY_NOT_FOUND,Microsoft.PowerShell.Commands.AddTypeCommand

Add-Type : Cannot add type. One or more required assemblies are missing.
At line:1 char:9
+ Add-Type <<<<  -AssemblyName Microsoft.Web.Deployment
    + CategoryInfo          : InvalidData: (:) [Add-Type], InvalidOperationException
    + FullyQualifiedErrorId : ASSEMBLY_LOAD_ERRORS,Microsoft.PowerShell.Commands.AddTypeCommand

Как я могу использовать Add-Type для загрузки Microsoft.Web.Deployment?


person Andy Schneider    schedule 01.09.2010    source источник
comment
У вас когда-нибудь это работало?   -  person JeffreyABecker    schedule 06.05.2013


Ответы (1)


PowerShell позволяет загружать только определенный предопределенный набор сборок по их частичному / простому имени. Вам нужно будет загрузить его через полное имя, например:

Add-Type -AssemblyName ('Microsoft.Web.Deployment, Version=7.1.0.0, ' +
                        'Culture=neutral, PublicKeyToken=31bf3856ad364e35')
person Keith Hill    schedule 01.09.2010
comment
почемуыыыыы? я не знаю, как часто я хочу это делать. было бы так просто, если бы была только add-type -gac microsoft.some.assembly, загружающая последнюю версию, как мы делаем для Visual Studio. - person Nacht; 31.03.2015
comment
Всегда можно загрузить по пути Add-Type -Path C:\Windows\Microsoft.NET\assembly\GAC_64\System.Web\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.dll - person Keith Hill; 31.03.2015
comment
да, но это раздражает, и вам нужно найти путь и все такое. Мне было бы легко создать функцию для автоматического выполнения этого и поместить ее в свой профиль, но я немного удивлен, что Microsoft этого не сделала. да ладно может следующая версия. может мне стоит предложить им это где-нибудь - person Nacht; 31.03.2015