Pregunta

Usando VS2005 y VB.NET.

Tengo un proyecto que es una API para un almacén de datos que creé.Cuando se compila crea api.dll.

Tengo un segundo proyecto en la misma solución que tiene una referencia de proyecto al proyecto API que, cuando se compila, creará wrapper.dll.Esto es básicamente un contenedor para la API que es específica 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 hacer que el proyecto contenedor compile el api.dll en si mismo para que solo tenga uno dll ¿moverse alrededor?

¿Fue útil?

Solución

@Jas, es una característica especial de Visual Studio.El procedimiento se describe en esta entrada de blog, llamada "Compartir un archivo clave de nombre seguro entre proyectos".El ejemplo es para compartir archivos clave con nombres seguros, pero funcionará para cualquier tipo de archivo.

Brevemente, hace clic derecho en su proyecto y selecciona "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 "Vincular archivo" si está usando Visual Studio 2003, o "Agregar" o "Agregar como vínculo" con 2005 (no estoy seguro acerca de 2008).En cualquier caso, elige el que incluya la palabra “Enlace”.Luego, 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 manera conveniente de crear un ensamblado que contenga todas las funciones 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 wrapper. dll).

Otros consejos

Hay una manera más fácil.Simplemente cree accesos directos (llamados archivos vinculados en Visual Studio-ese) en su proyecto wrapper.dll que apunten a los archivos fuente en api.dll.Eso compilará su fuente directamente en wrapper.dll.

Probablemente tendrás que usar una herramienta, como ILFusionar, para fusionar los dos ensamblajes.

Creo que podrías compilar api.dll como recurso en wrapper.dll.Luego acceda manualmente a ese recurso desde api.dll y cárguelo manualmente.He cargado ensamblados manualmente desde el disco, por lo que cargar uno desde un Stream no debería ser diferente.

Intentaría incluir el dll en su proyecto como un archivo, similar a incluir un archivo de texto o xml (además de la referencia del proyecto para la compilación).A continuación, establecería la acción de compilación en "Recurso incrustado". Dentro de wrapper.dll, usaría el objeto Assembly para acceder a api.dll como cualquier otro recurso incrustado.Luego también querrás cargar el ensamblaje usando Assembly.Load http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx

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