Tenemos un proyecto .NET que consta de varios subproyectos (alrededor de 20). Hay varias soluciones, cada una conteniendo solo aquellos subproyectos que son relevantes para la solución particular.Administrar dependencias de ensamblado .NET mediante referencia dll en lugar de referencia de proyecto en VS
Para permitir soluciones arbitrarias, nuestros subproyectos nunca se referencian entre sí mediante referencias de proyecto, sino más bien mediante referencias dll directas. Hay pocos ajustes en el archivo csproj, para que HintPath incluya $ (Configuración), por lo que Debug construye referencias de Debll dlls y Release builds reference Release dlls.
Todo funciona muy bien, pero hay dos problemas importantes - uno es molesto y otro es muy aguda:
- VS no reconoce las referencias dll con el propósito de calcular la dependencia. Tenemos que especificar manualmente las dependencias usando el diálogo "Dependencias del proyecto" cada vez que se agrega un nuevo proyecto o referencia. Esto es molesto
- No usamos ni Resharper ni Visual Assist (grandes herramientas, pero no las usamos, es un hecho). Nos gusta utilizar el comando estándar "Navegar a la definición" (disponible desde el menú contextual en el código fuente, por ejemplo). El problema principal es que solo funciona en el proyecto cruzado si un proyecto hace referencia al otro utilizando la referencia del proyecto y no funciona cuando la referencia es la referencia directa del dll, , incluso si el proyecto al que se hace referencia está incluido en la solución. Eso es un verdadero fastidio, porque en lugar de navegar hacia la fuente, navega hacia los metadatos.
Estoy buscando un consejo de aquellos que usan referencias de dll como nosotros y de alguna manera han superado estos dos problemas. Gracias.
EDIT:
Tenga en cuenta, que además del tema "Navegar a Definición", que tiene referencias de DLL en lugar de las referencias del proyecto incurre en un único coste de tiempo en el director del proyecto - que es para actualizar las dependencias del proyecto de cada solución afectada cuando se agrega un nuevo proyecto o se debe introducir una nueva dependencia. Estas dependencias de proyecto se conservan en el archivo .sln y no requieren mantenimiento hasta que llega un nuevo proyecto o se crea una nueva dependencia, lo que ocurre con demasiada frecuencia.
Estamos utilizando msbuild para construir nuestros proyectos en el servidor de CI, que utiliza los mismos archivos .sln que VS. Hay un archivo .sln principal, que incluye todos los subproyectos.
Deseo enfatizar el problema más agudo - la incapacidad de navegar a una definición en otro proyecto, aunque ambos proyectos están en la misma solución solo porque las referencias son referencias dll. Esto es molesto y es una molestia, no hay ninguna razón por la que VS insista en las referencias del proyecto para habilitar la función. Otras herramientas, como Resharper o Visual Assist no tienen esta limitación. Por desgracia, no tenemos estas herramientas y es poco probable que las tengamos en el futuro observable.
Solo para asegurarse de que entiendo, tiene una solución que tiene uno o más proyectos en ella. Algunos de estos proyectos hacen referencia al resultado de dll de otros proyectos en la solución, a pesar de que el proyecto al que se hace referencia está en la solución. –
De hecho. Pero también hay otras soluciones que no incluyen algunos de los proyectos a los que se hace referencia. Para tener esta flexibilidad con las soluciones de composición que uno quiera, solo hacemos referencia a dlls. Pero luego perdemos la capacidad de cruzar el proyecto "Navegar a navegación" incluso si los proyectos involucrados se encuentran en la solución. – mark
Sí, odio eso también. Una solución sería realmente genial. –