2011-08-02 25 views
9

Tengo un script Powershell que invoca un método en una biblioteca C#. La biblioteca dll se carga como:Powershell dll cargando

[Reflection.Assembly]::LoadFrom("$automationHome\dll\abc.dll") | Out-Null 

Ahora, mi biblioteca C# utiliza otra biblioteca xyz.dll en ella. Creo que no es necesario que cargue esto en la secuencia de comandos de Powershell, ya que abc.dll lo resolverá. Sin embargo, estoy consiguiendo un error que dice:

No se pudo cargar el archivo o ensamblado 'xyz, Version = 1.0.0.0, Culture = neutral PublicKeyToken = null' o uno de sus dependencias. El sistema no puede encontrar el archivo especificado.

¿Alguien me puede decir cómo solucionar esto?

Respuesta

6

LoadFrom() idealmente debe buscar la xyz.dll en el mismo directorio que abc.dll

Si está ejecutando la secuencia de comandos desde el mismo directorio que los archivos DLL, agregue el siguiente y luego haga lo LoadFrom()

$currentScriptDirectory = Get-Location 
[System.IO.Directory]::SetCurrentDirectory($currentScriptDirectory.Path) 
1

Asegúrese de que la dependencia dll xyz se encuentre en la ruta que utilizará LoadLibrary. Creo que en su caso será algo local para el script de powershell, cualquier cosa en un subdirectorio del script de power shell, o cualquier cosa en la variable de ruta o en el GAC.

0

Un par de ideas:

¿La referencia a xyz.dll de abc.dll (agregar referencia) tiene la propiedad de versión específica establecida en verdadero (configuración predeterminada) y está utilizando un r versión de xyz.dll?

Para algunos ensambles, la única manera de hacer que funcionen es cargarlos en el GAC. Es posible que desee intentar cargar xyz en el GAC.

Cuestiones relacionadas