2009-05-21 11 views
5

En una aplicación .NET que implica varios proyectos en una solución, tengo un proyecto con el espacio de nombres establecido en Company.Product.UI y otro con Company.Product.UI.WebPages. Mi problema es que dos dlls resultan de la construcción de los dos proyectos. ¿Cómo puedo tener un dll único y aún así conservar la estructura de la solución actual? Uso Visual Studio 2008 y C#.Conjunto único de proyectos múltiples

+1

Vea también http://stackoverflow.com/questions/1878807/visual-studio-2008-creating-single-dll-from-solution-with-many-projects –

Respuesta

11

Deberá combinar los dos proyectos en un proyecto o utilizar una herramienta como ILMerge para fusionar los ensamblados resultantes en un solo ensamblaje.

ILMerge es una utilidad que se puede utilizar para combinar múltiples NET en un solo conjunto. Está libremente disponible en desde la página de Herramientas & Utilidades en Microsoft .NET Framework Developer Center.

Si desea automatizar ILMerge como una tarea de MSBuild entonces sugeriría que echar un vistazo a ilmerge-tasks:

interesado en utilizar ILMerge durante una construcción automatizado? ILMerge Tasks contiene dos proyectos compilables que le permitirán acceder a ILMerge como una tarea desde MSBuild y NAnt. Es incluso incluye un evento posterior a la compilación que combina ILMerge y la tarea dll para que puede utilizar la tarea sin ILMerge.exe presente.

+1

¿Puedo integrar ILMerge en el proceso de compilación de Visual Studio? para automatizar la tarea? – kjv

+0

@kjv De eso se trata el bit de ilmerge-taks –

1

Supongo que podría crear un nuevo archivo de proyecto que contenga todos los archivos de los dos proyectos. De esta forma, puede mantener la estructura actual para el desarrollo y usar el archivo de proyecto fusionado para generar la salida que se lanzará del proyecto. Los archivos del proyecto son archivos XML bastante sencillos, por lo que si abre uno de ellos en un editor de texto probablemente descubrirá cómo funcionan con bastante rapidez.

La desventaja obvia con este enfoque es, por supuesto, que necesitará mantener este tercer archivo de proyecto cuando los archivos se agreguen o eliminen en uno de los proyectos, pero si eso es algo que no sucede muy a menudo, podría funcionar Bueno, Yo pienso.

0

Hay una forma simple de hacerlo, pero puede que no sea la mejor manera. Crea una nueva solución con el nombre del dll que quieras. Cree la estructura de carpetas en este proyecto, que es igual a los nombres de los dos proyectos. Luego, en la carpeta específica, haga un 'Agregar elemento existente'. Agregue los archivos cs en el proyecto de ese nombre. Cuando agregue los archivos, seleccione 'Agregar como enlace' en el botón Agregar (hay un menú desplegable donde puede seleccionar al lado del botón Agregar). Sigue haciendo eso y construye. Tendrás el dll.

por ejemplo. Si tiene un proyecto llamado A y uno llamado B y desea fusionarlos en un dll llamado C. Cree un nuevo proyecto llamado C. Agregue una carpeta en este proyecto llamada A y otra carpeta llamada B. Ahora diga que el proyecto A tiene una El archivo cs X.cs y B tiene uno llamado Y.cs. En la carpeta llamada A, haz clic derecho y haz Agregar elemento existente. Vaya al Proyecto A y seleccione X.cs. Junto al botón Agregar, verá una flecha hacia abajo. Haga clic en eso y seleccione Agregar como enlace. Haga lo mismo con B. Cree este proyecto y obtendrá su dll en la carpeta bin.

Cuestiones relacionadas