net con c# .net dllregistration

c# - con - regasm.exe download



En.NET, ¿hay una necesidad de registrar el DLL? (7)

Debe "colocarlo" en un directorio donde lo encuentre la aplicación que lo necesite.

Si hay varias aplicaciones, o si desea "soltar" el archivo en algún lugar que no sea el directorio de la aplicación, generalmente necesita ajustar la variable PATH o registrar el ensamblado en la Caché de ensamblados global (GAC).

Es necesario registrar una DLL compilada (escrita en C # .NET) en una máquina de destino.

La máquina de destino tendrá .NET instalado, ¿es suficiente simplemente colocar la DLL en la máquina de destino?


Una aplicación puede usar .NET dll simplemente con tenerla presente en la misma carpeta que la aplicación.

Sin embargo, si desea que otras aplicaciones de terceros encuentren la DLL y la utilicen, también deberían incluirla en su distribución. Esto puede no ser deseable.

Una alternativa es tener el DLL registrado en el GAC (Global Assembly Cache).


Uno de los mejores puntos de venta de .NET para la plataforma de Windows cuando entró en escena es que, por defecto, las DLL de ensamblaje de .NET no tienen que registrarse y las aplicaciones las pueden consumir de manera privada simplemente poniéndolas en el mismo lugar. carpeta como el archivo EXE. Eso fue un gran paso adelante porque permitió a los desarrolladores evitar el enfrentamiento de DLL / COM infierno.

Los módulos DLL / COM compartidos demostraron ser uno de los mayores errores de diseño de Windows, ya que conducen a la inestabilidad de las aplicaciones que los usuarios instalan. La instalación de una nueva aplicación podría arruinar una aplicación que funcionaba bien, ya que la nueva aplicación presentaba versiones más recientes de módulos DLL / COM compartidos. (Demostró en la práctica ser una carga excesiva para que los desarrolladores gestionen adecuadamente las dependencias de versiones de granularidad).

Una cosa es administrar versiones de módulos con un sistema de repositorio de compilación como Maven. Maven trabaja extremadamente bien haciendo lo que hace.

Sin embargo, es una cuestión completamente diferente lidiar con ese problema en un entorno de tiempo de ejecución del usuario final distribuido en una población de millones de usuarios.

El .NET GAC de ninguna manera es una solución suficiente para este antiguo problema de Windows.

Los ensamblados DLL consumidos de forma privada siguen siendo infinitamente preferibles. Es una forma obvia de ir, ya que el espacio de disco es extremadamente barato en estos días (~ $ 100 puede por unidad de terabyte en Fry en estos días). No hay nada que ganar compartiendo asambleas con otros productos, y sin embargo la reputación de la compañía se pierde cuando las cosas van hacia el sur para el usuario pobre.


En realidad, NO es necesario registrar un dll en .NET en la máquina de destino.

Si hace referencia a un .dll en su aplicación, haga clic en el .dll al que se hace referencia debajo de las referencias en su proyecto, mire las propiedades y establezca Aislado en VERDADERO.

Esto ahora incluirá automáticamente este .dll en su proyecto y su aplicación utilizará la copia del archivo .dll incluido en su proyecto sin necesidad de registrarlo en el sistema de destino.

Para ver un ejemplo de trabajo de este aspecto aquí:

http://code.msdn.microsoft.com/SEHE

El archivo .dll en cuestión deberá registrarse en el sistema en el que crea su aplicación para que funcione correctamente. Sin embargo, una vez que construya su proyecto, no será necesario registrar el .dll en cuestión en ningún sistema que implemente su aplicación o programa.

Una ventaja adicional de usar este método es que, incluso si en el futuro, otro .dll se registra con el mismo nombre en el sistema de destino en cuestión, su proyecto continuará utilizando el .dll con el que implementó. Esto es muy útil cuando un archivo .dll tiene muchas versiones y desea mantener cierta estabilidad, como usar el que ha probado, pero todas las demás aplicaciones usarán el .dll registrado a menos que también utilicen el método aislado = verdadero.

El ejemplo anterior es uno de esos casos, hay muchas versiones de Skype4COM que es un .dll API de Skype y puede cambiar a menudo.

Este método permite que el ejemplo anterior use el API .dll con el que se probó el proyecto, cada vez que un usuario instala una nueva versión de Skype, es posible que se instale una versión modificada de este .dll.

Además, hay algunos clientes de Skype que no instalan este .dll, la versión comercial del cliente de Skype, por ejemplo, es más pequeña y no incluye este .dll, por lo que en este caso, el proyecto no falla en ese .dll falta y no está registrado porque está incluido en el proyecto como aislado = verdadero.


Creo que estás confundiendo las cosas un poco. El registro de un dll nunca se ha necesitado para poder usarlo.

El uso de un dll solo requiere cargarlo (dada una ubicación conocida o si la biblioteca está en la ruta del sistema) y obtener la dirección de la función que desea utilizar.

El registro de la dll se utilizó al distribuir objetos COM o ActiveX que necesitan agregar ciertas entradas al registro de Windows. Para utilizar un servicio COM (por ejemplo), necesita hacer referencia a un GUID, es decir, un identificador único, que le permite obtener un control del dll que implementa el servicio (o le da acceso). A veces puede hacer referencia a un nombre completamente calificado y obtener los mismos resultados.

Para que todo eso funcione, el dll debe registrarse. Este proceso de "registro" solo crea varias entradas en el registro, pero principalmente estas dos: una asociando un GUID con la ubicación del dll (para que pueda referenciarlo a través del GUID sin saber exactamente dónde se encuentra exactamente) y un segundo asociando el nombre completo con el GUID. Pero nuevamente, esto es solo para objetos COM o ActiveX.

Cuando desarrolla una aplicación en .NET, las bibliotecas a las que se hace referencia en su proyecto se cargan automáticamente cuando las necesita sin tener que preocuparse por ubicarlas o cargarlas. Para eso, el marco verifica dos ubicaciones para las bibliotecas a las que se hace referencia.

  • La primera ubicación es la ruta de la aplicación.
  • La segunda ubicación es el GAC.

El GAC (Global Assembly Cache) le permite registrar efectivamente un dll para ser utilizado en todo el sistema y funciona como una evolución del viejo mecanismo de registro.

Entonces, básicamente, solo necesitas poner el dll en la misma carpeta de la aplicación.


Por lo general, es suficiente soltar el dll en la carpeta de su aplicación en la máquina de destino.

Si el dll debe estar disponible para otras aplicaciones, entonces puede considerar el GAC .


Si desea acceder al ensamblaje a través de com + . Un ejemplo sería usar un tipo definido en un ensamblado .NET desde una aplicación que no sea .NET, como una aplicación de formas de pago VB6.

Si planea acceder al ensamblado desde otra aplicación .NET, no tiene que hacer nada. Si su ensamblado tiene un nombre fuerte, probablemente sea una buena idea colocarlo en el GAC. De lo contrario, simplemente colóquelo en el directorio de la aplicación que lo hará referencia.