2010-09-01 9 views
17

Estoy escribiendo algunos scripts de PowerShell que usan la API MSDeploy. Puedo cargar el ensamblado utilizando¿Cómo uso Add-Type para cargar Microsoft.Web.Deployment?

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

La ubicación es en el 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 

Sin embargo, no soy capaz de cargar el ensamblado utilizando Add-Type. Aparece un error que indica que no se puede encontrar el ensamblaje y que faltan uno o más ensamblajes.

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 

¿Cómo puedo usar Add-Type para cargar Microsoft.Web.Deployment?

+0

¿Alguna vez lo hizo funcionar? – JeffreyABecker

Respuesta

25

PowerShell solo permite cargar un cierto conjunto de conjuntos predefinidos por su nombre parcial/simple. Necesitará cargarlo a través de su nombre completo, por ejemplo:

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

whyyyyyyy? No sé con qué frecuencia quiero hacer esto. Sería tan fácil si solo hubiera un 'add-type -gac microsoft.some.assembly' que cargue la última versión como lo hacemos para Visual Studio. – Nacht

+2

Siempre se puede cargar por la ruta 'Add-Type -Path C: \ Windows \ Microsoft.NET \ assembly \ GAC_64 \ System.Web \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Web.dll' –

+0

Sí, pero eso es molesto y tienes que ir a buscar el camino y esas cosas. Sería fácil para mí crear una función para hacer esto automáticamente y ponerlo en mi perfil, pero estoy sorprendido de que Microsoft no haya hecho esto. oh bueno, tal vez la próxima versión. tal vez debería sugerirles algo – Nacht

Cuestiones relacionadas