5

Tenemos un archivo de solución VS2008 que contiene alrededor de 80 proyectos (sí, lo sé, es una mierda).Cómo descomponer una solución VS grande en soluciones más pequeñas

Los proyectos están organizados en varias carpetas, y algunos pueden depender de otros archivos DLL de terceros en una carpeta de nivel superior "Libs".

Nos gustaría refactorizar esto en varios archivos .sln más pequeños, cada uno con un número razonable de proyectos.

El problema es que cuando se mueve el proyecto de archivos de un lado, las rutas relativas almacenados dentro de ellos se romperán por lo que tendrán que hacer un montón de manuales "altos parche" para arreglar eso.

¿Hay alguna herramienta o técnica probada para hacer algo como esto?

Respuesta

1

Hicimos algo similar, y para corregir las referencias, escribimos una utilidad rápida que analiza los archivos .csproj o .vbproj (que son básicamente archivos xml) y repara las rutas afectadas en función de dónde está el archivo .proj fue localizado después de la refactorización. esto era mejor que cambiar manualmente el proyecto xml o agregar eliminar referencias para evitar errores humanos.

Una vez que sepa dónde está el archivo proj y dónde estarán los archivos comunes (u otros archivos), modifique el nodo Referencia en el archivo de proyecto con la ruta relativa. Así, por ejemplo, es posible que tener que cambiar el original

<Reference Include="NHibernate"> 
     <HintPath>..\..\ServicesShared\Library\NHibernate.dll</HintPath> 
</Reference> 

en el archivo .proj a

<Reference Include="NHibernate"> 
     <HintPath>..\Common\ServicesShared\Library\NHibernate.dll</HintPath> 
</Reference> 

si eso es donde el NHibernate.dll vive ahora.

Espero que esto les sirva a ustedes.

+0

Gracias. También estaba pensando en la creación de una utilidad personalizada para eso. En su ejemplo, usted demuestra un problema levemente diferente, donde la carpeta real utilizada para los archivos DLL a los que se hace referencia puede cambiar por completo (no como resultado de una operación de copia/movimiento de .csproj). ¿Manejó esto también en su utilidad? –

+0

Manejamos los cambios de la carpeta de la biblioteca, no todos los archivos de proj que se mueven, pero incluso si ese fuera el caso de que no fuera la carpeta de la biblioteca pero el archivo .csproj real se movió relativamente, creo que una lógica similar puede se aplicado. Para cada conjunto de archivos de proyecto movidos juntos en una solución, sabría cómo las rutas relativas para esos proyectos necesitan ser reparadas. Tal vez pueda crear un par de valores clave de (antes, después) para cada referencia para un conjunto de archivos de proyecto que pertenecerán a una solución y actualizar los archivos .proj en consecuencia. Espero que esto tenga sentido. – desigeek

Cuestiones relacionadas