¿Cómo registro un archivo DLL .NET en el GAC?


83

He creado un .DLLarchivo .NET , que quiero registrar en el GAC .

He utilizado este comando en el símbolo del sistema de Windows Server 2003 :

C:\"Path of dll"\>gacutil /i dllname.dll
'gacutil' is not recognized as an internal or external command,
operable program or batch file.

Dice que el camino no es correcto.

¿Necesito usar esto en un indicador de .NET cmd? Si es así, no puedo ubicar el indicador de .NET cmd.


¿Cuál fue el mensaje de error exacto? ¿Se refiere a la ruta hacia gacutil.exeo hacer dllname.dll?
UuDdLrLrSs

Respuestas:


101

Puedes hacerlo usando la gacutilherramienta. En su forma más simple:

gacutil /i yourdll.dll

Encontrará el símbolo del sistema de Visual Studio en el menú de inicio en Programas -> Visual Studio -> Visual Studio Tools .


7
Si no tiene Visual Studio, puede acceder a gacutil.exe en C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ Al menos ahí es donde existe en un servidor Win2012R2 .
sonyisda1

Tengo funciones que requieren elevación, por lo que al colocar ese dll en ensamblaje, ¿tendrá privilegios? ¿Podrá un usuario no administrador ejecutar esas funciones en elevación?
Susarla Nikhilesh

Mi máquina lo tenía en C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools; también requería que ejecutara el comando a través de la línea de comando elevada.
neminem

35

Necesitarás:

  • Nombre seguro de su ensamblado (Visual Studio, Propiedades del proyecto, pestaña Firma, Firmar el ensamblaje)
  • Modifique sus eventos de compilación (Propiedades del proyecto, pestaña Eventos de compilación, línea de comando posterior a la compilación)
   cd C: \ Archivos de programa \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin
   gacutil.exe / i "$ (TargetPath)" / f / nologo
   gacutil / l "$ (TargetName)" / nologo

Ahora, cada vez que cree su proyecto, se instalará en GAC.


En Visual Studio 2017, debe ejecutar VS como administrador o gacutil falla por falta de permiso.
Nathan

19

Simplemente arrastre y suelte el archivo DLL en la carpeta C:\Windows\assemblyusando el Explorador de Windows.

Consideración:

En versiones anteriores de .NET Framework, la extensión de shell de Windows Shfusion.dll le permitía instalar ensamblados arrastrándolos al Explorador de archivos. A partir de .NET Framework 4, Shfusion.dll está obsoleto.

Fuente: Cómo: instalar un ensamblado en la caché de ensamblados global


2
Debería iniciar sesión con una cuenta de administrador ya que "Ejecutar como" no está disponible para arrastrar y soltar.
Salman Siddiqui

6
Esto no tiene ningún efecto en mi final: la biblioteca no se agrega, no hay mensaje de error. Estoy usando una cuenta de administrador.

8
"En versiones anteriores de .NET Framework, la extensión de shell de Windows Shfusion.dll le permitía instalar ensamblados arrastrándolos en el Explorador de archivos. A partir de .NET Framework 4, Shfusion.dll está obsoleto". msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
njplumridge

Énfasis en "arrastrar y soltar" - copiar y pegar no funciona
Todd

13

Por cierto, estas respuestas no le dicen que gacutil reside en C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1 *.

No lo tenía en mi carpeta v2.0. Pero intenté arrastrar y soltar la DLL en la carpeta C: \ WINDOWS \ Assembly como se sugirió aquí anteriormente y fue más fácil y funciona, siempre que sea una biblioteca .NET. También probé una biblioteca COM y esto falló con un error de que esperaba un manifiesto de ensamblado. Sé que esa no era la pregunta aquí, pero pensé en mencionar que en caso de que alguien descubra que no puede agregarla, esa podría ser la razón.

-Tom


1
Estas respuestas no le dicen que gacutilno viene con Windows.
Ian Boyd

13

De Wikipedia :

gacutil.exe es la utilidad .NET que se utiliza para trabajar con GAC .

Se puede verificar la disponibilidad de un ensamblado compartido en GAC usando el comando:

gacutil.exe /l "assemblyName"

Uno puede registrar un ensamblado compartido en el GAC usando el comando:

gacutil.exe /i "assemblyName"

O colocando un archivo de ensamblaje en la siguiente ubicación usando la GUI:

%windir%\assembly\

Otras opciones para esta utilidad se describirán brevemente si usa la /?bandera, es decir:

gacutil.exe /?

GacUtil no viene con .NET. El asistente de colocación y colocación de shell que solía permitir arrastrar y soltar para registrar ensamblados ya no funciona.
Ian Boyd

5

Pruebe GACView si tiene miedo a las indicaciones de comando.

No ha configurado el PATH correctamente en DOS. Necesita señalar el camino donde reside el gacutil para usarlo en DOS.


4
  • Ejecute el símbolo del sistema para desarrolladores para V2012 o cualquier versión instalada en su sistema

  • gacutil / i pathofDll

  • Entrar

¡¡¡Hecho!!!


mencionando el símbolo del sistema 'Desarrollador', ¡bien! como gacutil no está disponible para construir el símbolo del sistema
Muds

3

Como dijo ando, simplemente arrastre y suelte el ensamblaje en la carpeta C: \ windows \ assembly. Funciona.


Énfasis en "arrastrar y soltar" - copiar y pegar no funciona
Todd

1
Arrastrar y soltar ya no funciona. El controlador Shell Fusion ha quedado obsoleto durante mucho tiempo.
Ian Boyd

1

Las soluciones anteriores se ven maravillosas. Sin embargo, para ser simple, supongo que todo lo que necesita es ingresar el nombre del ensamblaje junto con su ruta completa como:

gacutil -i C:\MyDlls\GacDeployedAssemblies\dllname.dll

Prestando atención a C: \ MyDlls \ GacDeployedAssemblies


1

En el caso de Windows 7, gacutil.exe (para poner el ensamblaje en GAC) y sn.exe (para garantizar la singularidad del ensamblaje) reside en C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin

Luego vaya a la ruta de gacutil como se muestra a continuación, ejecute el siguiente comando después de reemplazar la ruta de su ensamblaje

C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin> gacutil / i "reemplace con la ruta de su ensamblaje para colocarlo en GAC"


0

Desde la Publishpestaña, vaya a application Files.

Luego, haga clic en unnecessary files.

Después de eso, haga la prensa de exclusión ok.

Finalmente, cree los archivos del proyecto y ejecute los proyectos.


0

Probé casi todo en los comentarios y no funcionó. Así que lo hice gacutil /i "path to my dll"desde Powershell y funcionó.

También recuerde el truco de presionar Shift cuando hace clic derecho en un archivo en el Explorador de Windows para obtener la opción de Copiar ruta.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.