How do I use Add-Type to load Microsoft.Web.Deployment?

不想你离开。 提交于 2019-11-28 02:36:50

问题


I am writing some PowerShell scripts that use the MSDeploy API. I can load the assembly using

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

The location is in the 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

However, I am not able to load the assembly using Add-Type. I get an error saying the assembly cannot be found and that one or more assemblies are missing.

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

How can I use Add-Type to load Microsoft.Web.Deployment?


回答1:


PowerShell only allows a certain pre-defined set of assemblies to be loaded by their partial/simple name. You're going to need to load it via its fully qualified name, for example:

Add-Type -AssemblyName ('Microsoft.Web.Deployment, Version=7.1.0.0, ' +
                        'Culture=neutral, PublicKeyToken=31bf3856ad364e35')


来源:https://stackoverflow.com/questions/3621900/how-do-i-use-add-type-to-load-microsoft-web-deployment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!