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

Tengo varias librerías de utilidad que me gustaría utilizar en este módulo. Existe de todos modos me puede vincular estas bibliotecas estáticamente, así que no voy a distribuir varios archivos DLL (con lo que la distribución de mis librerías de utilidad por separado)?

Me gustaría tener sólo una DLL.

OriginalEl autor erlando | 2008-09-02

3 Comentarios

  1. 23

    Puede combinar sus muchos archivos Dll con ILMERGE:

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

    No lo he probado yo mismo. Espero que ayude.


    Descarga aquí:

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

    Breve Descripción (de descarga de la página)

    ILMerge es una utilidad para la fusión de varias .NET ensamblados en una sola .NETO de la asamblea. Funciona en archivos Dll y ejecutables por igual, y viene con varias opciones para controlar el procesamiento y el formato de la salida. Consulte la documentación que se acompaña para más detalles.

    Como Seb mencionado ILMERGE va a hacer esto – pero una advertencia de que ninguna de las asambleas pueden contener código inseguro.
    Código inseguro está bien. No de modo mixto de asambleas. La clase que contiene el código no administrado y fue creada por un C++/CLI proyecto.

    OriginalEl autor Seb Nilsson

  2. 12

    Si usted 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 consejos para poner tus archivos dll en el archivo exe como recursos (Para cada archivo DLL que añadir, mostrar sus propiedades y cambiar su «Build Action» a «Recurso Incrustado.»). A continuación, una clase personalizada cargador que se necesita para hacer el trabajo ejecutable (En tiempo de ejecución, el CLR no ser capaz de encontrar la DLL dependiente asambleas, que es un problema. Para solucionar este problema, cuando su aplicación se inicializa el registro de un método de devolución de llamada con el dominio de aplicación del ResolveAssembly evento).

    Asegúrese de cambiar el resourceName cadena para señalar a los recursos reales. (por ejemplo, cambio AssemblyLoadingAndReflection a su nombre del proyecto).

    Mucho mejor! Nativ solución a través de herramientas de terceros. Mira en la sección de comentarios para el comentario de la ILMerge creador…
    Mientras esto toma un poco de esfuerzo extra, esto parece la mejor solución a través de la aceptación de la respuesta.

    OriginalEl autor Kaganar

  3. 2

    La respuesta corta para esto es ¡no!
    Usted no puede enlazar en un archivo dll durante la compilación.
    No sé si hay alguna manera sutil de hacer esto, pero probablemente tendría que distribuir los archivos dll junto con su cms.
    La mejor manera de hacer esto es hacer algún tipo de re-distribución.

    No es cierto. Mira Kagamar la respuesta. También busque en la sección de comentarios para el comentario de Mike Barnett.
    Mal, esto no es la vinculación de esta fusión. Mientras que la mayoría de los upvoted respuesta responde a la intención de la pregunta (y por lo tanto es el más útil respuesta), khebbie la respuesta es en realidad la de la derecha, mientras una de ellas sería, precisamente, responder a la pregunta planteada. Ni siquiera se puede vincular un archivo dll en C/C++, usted necesita un archivo estático para hacer eso…
    Es hilarante que esta respuesta, que es técnicamente correcta no tiene upvotes. C# es un lenguaje administrado, e incluso ILMerge es una asamblea a la fusión no es un enlazador. Un enlazador, tal como se entiende en C++ y los programadores de C, puede que no existen en la actualidad .NETA tal como existe actualmente. Sin embargo «.Net nativo» de la tecnología aún no lanzado a mediados de 2015, puede algún día ser liberados que permite de una forma totalmente compilado (no MSIL) de la aplicación, que podría estar vinculado estáticamente.

    OriginalEl autor khebbie

Dejar respuesta

Please enter your comment!
Please enter your name here