2009-07-27 14 views
107

Estoy comenzando a analizar el desarrollo de modelos y complementos de PowerShell. Lo primero que noto es hacer referencia a System.management.automation.dll. Sin embargo, en Visual Studio, la ficha .NET no tiene esa asamblea, y tampoco es uno de exploración capaz dehaciendo referencia a system.management.automation.dll en Visual Studio

C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

hacer una referencia basada en archivos.

Am i forced to copy the file out manually to make an easy reference?

+0

¿Podría considerar cambiar la respuesta aceptada para este? El enfoque del paquete NuGet parece ser el más directo y robusto. – julealgon

Respuesta

129

System.Management.Automation on Nuget

Actualización: paquete es ahora propiedad de PowerShell Equipo. ¡Hurra!

+2

Esto merece más hasta – foobarcode

+0

Esto debe marcarse como la respuesta. – julealgon

+5

Ojalá Microsoft tomara posesión de este Nuget ya que están tan húmedos de apertura en estos días. – skfd

92

Se instala una copia de System.Management.Automation.dll cuando instala el SDK de Windows (una versión adecuada y reciente de todos modos). Debería estar en C: \ Archivos de programa \ Conjuntos de referencia \ Microsoft \ WindowsPowerShell \ v1.0 \

+0

dulce. lo encontré, gracias. – icelava

+2

Instalé el SDK en 2 máquinas diferentes de 64 bits (con dificultad) y encontré la versión 6.2.8229.0, 4.66MB dll en solo 1, y solo en c: \ archivos de programa (x86) \ ensamblados de referencia \ microsoft \ windowspowershell \ v1.0. Recomiendo mucho editar el archivo .csproj, o ingresar el archivo DLL correcto al control de origen y hacer referencia a él. La instalación de SDK es demasiado inflexible. –

+0

@ ashes999 PowerShell 2.0 realmente se ejecuta en la DLL 1.0. – kravits88

68

No pude obtener el SDK para instalar correctamente (algunos de los archivos parecían no firmados, algo así). Encontré otra solución here y parece funcionar bien para mí. No requiere la instalación de nuevos archivos. Básicamente, lo que se hace es:

Editar el archivo .csproj en un editor de texto y añadir:

<Reference Include="System.Management.Automation" /> 

a la sección correspondiente.

Espero que esto ayude.

+1

Me parece extraño que tengamos que hacer esto manualmente (editando. archivo csproj) pero funcionó para mí. – kd7iwp

+0

La edición del archivo de proyecto solo lo fuerza a cargar la versión desde el GAC (que es la versión V2) en lugar del sistema de archivos (que es la versión V1) –

+0

Esto puede ocasionar problemas cuando la aplicación se implementa en el servidor porque el ensamblaje podría no encontrarse allí. – marsze

1

El ensamblaje que viene con Powershell SDK (C: \ Archivos de programa \ Conjuntos de referencia \ Microsoft \ WindowsPowerShell \ v1.0) no viene con los tipos específicos de Powershell 2.

La edición manual del archivo csproj resolvió mi problema.

69

Si no desea instalar el SDK de Windows se puede obtener la DLL mediante la ejecución del siguiente comando en PowerShell:

Copy ([PSObject].Assembly.Location) C:\ 
+7

¡Eso sí que es brillante! – 8DH

+2

Muy dulce. No hubiera pensado en eso. – Marius

1

Utilicé el menú VS Project Reference y busqué en: C: \ windows \ assembly \ GAC_MSIL \ System.Management.Automation y agregué una referencia para el archivo dll y Runspaces dll.

No necesité hackear el archivo .csprj y agregar la línea de referencia mencionada anteriormente. No tengo instalado el SDK de Windows.

Hice la copia que Powershell mencionado anteriormente: Copiar ([PSObject] .Assembly.Location) C: \

Mi prueba con un comando Get-Process Powershell luego trabajó. Solía ​​ejemplos de Powershell para los desarrolladores Capítulo 5.

8

si es de 64 bits ellos - C: \ Archivos de programa (x86) \ Referencia Asambleas \ Microsoft \ WindowsPowerShell ** 3.0 **

y la versión podría ser diferente

0

También puede utilizar nuget: https://www.nuget.org/packages/System.Management.Automation/ Es quizás una mejor opción.

+0

Tuve el problema de que se hizo referencia a la DLL correcta en el proyecto, pero la reconstrucción produjo un error que indica que no se encontró el paquete de Automatización. El uso de Nuget solucionó esto. Asegúrese de seleccionar el "Proyecto predeterminado" correcto en la consola de Package Manager al ejecutar Install-Package. – user3523091

Cuestiones relacionadas