Pregunta

Estoy trabajando en un módulo para un CMS.Este módulo se distribuye como una biblioteca de clases DLL.

Tengo varias bibliotecas de utilidades que me gustaría usar en este módulo.¿Hay alguna forma de vincular estas bibliotecas estáticamente para no tener que distribuir varias DLL (distribuyendo así mis bibliotecas de utilidades por separado)?

Me gustaría tener sólo una DLL.

¿Fue útil?

Solución

Puede fusionar sus muchas DLL con ILMERGE:

http://research.microsoft.com/~mbarnett/ILMerge.aspx

No lo he probado yo mismo.Espero eso ayude.


Descarga aquí:
http://www.microsoft.com/downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en

Breve descripción (desde la página de descarga)
ILMerge es una utilidad para fusionar múltiples ensamblados .NET en un único ensamblado .NET.Funciona tanto con archivos ejecutables como con archivos DLL y viene con varias opciones para controlar el procesamiento y el formato de la salida.Consulte la documentación adjunta para obtener más detalles.

Otros consejos

Si no desea utilizar ILMerge, consulte esta página:

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

Nota del editor:Jeffrey Richter recomienda colocar sus archivos DLL en un archivo exe como recursos (Para cada archivo DLL que agregue, muestre sus propiedades y cambie su "Acción de compilación" a "Recurso integrado".).Entonces se necesita un cargador de clases personalizado para que el ejecutable funcione (En tiempo de ejecución, CLR no podrá encontrar los ensamblados DLL dependientes, lo cual es un problema.Para solucionar este problema, cuando su aplicación se inicialice, registre un método de devolución de llamada con el evento ResolveAssembly del dominio de aplicación.).

Asegúrese de cambiar el resourceName cadena para apuntar a sus recursos reales.(p.ej.cambiar AssemblyLoadingAndReflection al nombre de su proyecto.)

La respuesta corta a esto es ¡no!No se puede vincular una DLL durante la compilación.No sé si hay alguna manera sutil de hacer esto, pero probablemente tendrías que distribuir los dlls junto con tus cms.La mejor manera de hacerlo es hacer algún tipo de redistribuible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top