2009-09-07 21 views
5

¿Es posible hacerlo de forma nativa sin complementos o herramientas de terceros?¿Cómo instalar el ensamblaje en GAC usando Msbuild?

Sé que existe el gacutil, pero no hay un ejecutable, de lo contrario podría haberlo llamado desde la tarea Exec.

¿Alguien ha hecho algo similar?

+1

No entiendo lo que quiere decir con "no hay un ejecutable". gacutil es ciertamente un exe que puedes ejecutar ... –

+0

sí, gacutil es un exe –

+0

¡creo que tienes razón! fui engañado. –

Respuesta

0

El gacuti.exe puede estar en más de un lugar. No está en la variable system% path%, por lo que tendrá que usar la ruta completa (no se ejecutará de otra manera).
utilizo C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\:

"C: \ Archivos de programa \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin \ gacutil.exe" Se informó MyAssembly.dll -i

que se encuentran en otros lugares también:

C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1.4322 \ gacutil.exe
C: \ archivos de programa \ Microsoft SDKs \ Windows \ v6.0A \ bin \ gacutil.exe
C: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ VC \ Gacutil.exe

Una manera fácil de encontrar que está usando la búsqueda ventanas, o la línea de comandos: dir gacutil.exe /s /a.

Desafortunadamente, tengo algunos servidores en los que no se encontró gacutil, y tuve que instalar los dlls manualmente.

+3

Oficialmente, gacutil es una herramienta de SDK, por lo que la ubicación más "correcta" sería la ruta que se encuentra en la clave de registro "HKLM \ SOFTWARE \ Microsoft \ Microsoft SDK \ Windows" debajo del valor "CurrentInstallFolder". – bobbymcr

+0

Eso es bueno, ¿sabes? Gracias. – Kobi

1

Gacutil.exe es la herramienta estándar admitida para realizar instalaciones "dev box" de ensamblados .NET. Yo recomendaría simplemente usar la tarea Exec como mencionaste para invocarla si quieres hacer GAC en tus ensamblajes como parte de una tarea de compilación.

Si realmente desea hacer esto sin crear un nuevo proceso, entonces tendría que escribir una tarea de MSbuild personalizada para implementar las llamadas de interoperabilidad COM necesarias para hacer lo que hace gacutil.exe. Junfeng Zhang's blog post sería un buen punto de partida si quieres seguir esta ruta.

6

Debe usar la tarea "GacUtil", de MSBuild Community Tasks (gratis). Creo que esto es más limpio que llamar al ejecutable.

+0

+1 Internamente llama a las API de GAC en lugar de buscar la herramienta también BTW –

Cuestiones relacionadas