.net - studio - Compila una dll referenciada
crear una dll(com) en visual studio c# (4)
Usando VS2005 y VB.NET.
Tengo un proyecto que es una API para un data-store que creé. Cuando se compila, crea api.dll
.
Tengo un segundo proyecto en la misma solución que tiene una referencia de proyecto para el proyecto API que, cuando se compile, creará wrapper.dll
. Esto es básicamente un contenedor para la API que es específico de una aplicación. Cuando uso wrapper.dll
en esa otra aplicación, tengo que copiar wrapper.dll
y api.dll
a mi nueva aplicación. ¿Cómo puedo obtener el proyecto envoltorio para compilar el api.dll
en sí mismo para que yo solo tenga una dll
para mover?
Creo que podrías compilar api.dll como recurso en wrapper.dll. A continuación, acceda manualmente a ese recurso desde api.dll y cárguelo manualmente. He cargado ensambles manualmente desde el disco, por lo que cargar uno desde un Stream no debe ser diferente.
Trataría de incluir el dll en tu proyecto como un archivo, similar a incluir un archivo de texto o xml (además de su referencia de proyecto para la compilación). Luego, establecería la acción de compilación en "Recurso incrustado". Dentro de wrapper.dll, utilizaría el objeto Assembly para acceder a api.dll como cualquier otro recurso incrustado. También querrá cargar el ensamblado utilizando Assembly.Load http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx
Hay una manera más fácil. Simplemente cree accesos directos (llamados archivos vinculados en Visual Studio-ese) en su proyecto wrapper.dll que apuntan a los archivos fuente en api.dll. Eso compilará su fuente directamente en wrapper.dll.
@Jas, es una característica especial en Visual Studio. El procedimiento se describe en esta entrada de blog, llamada "Compartir un archivo de clave de nombre fuerte en todos los proyectos" . El ejemplo es para compartir archivos de claves de nombres fuertes, pero funcionará para cualquier tipo de archivo.
En resumen, haga clic derecho en su proyecto y seleccione "Agregar elemento existente". Busque el directorio de los archivos que desea vincular y resalte el archivo o los archivos. En lugar de simplemente presionar "Agregar" o "Abrir" (dependiendo de su versión de Visual Studio), haga clic en la pequeña flecha hacia abajo en el lado derecho de ese botón. Verá opciones para "Abrir" o "Enlace de archivo" si está usando Visual Studio 2003, o "Agregar" o "Agregar como enlace" con 2005 (no estoy seguro acerca de 2008). En cualquier caso, elija el que implica la palabra "Enlace". Entonces, su proyecto esencialmente hará referencia al archivo; será accesible tanto desde el proyecto original en el que se encontraba como desde el proyecto al que "lo vinculó".
Esta es una forma conveniente de crear un ensamblado que contiene toda la funcionalidad de wrapper.dll y api.dll, pero deberá recordar repetir este procedimiento cada vez que agregue un nuevo archivo a api.dll (pero no al envoltorio. dll).
Probablemente tendrá que usar una herramienta, como ILMerge , para fusionar los dos ensamblajes.