5

Abbiamo un file di soluzione VS2008 che contiene circa 80 progetti (sì, lo so che fa schifo).Come rompere una soluzione VS di grandi dimensioni in soluzioni più piccole

I progetti sono disposti in varie cartelle e alcuni possono dipendere da altre DLL di terze parti in una cartella "Lib" di livello superiore.

Vorremmo refactoring questo in diversi file .sln più piccoli, ciascuno contenente un numero ragionevole di progetti.

Il problema è che quando si spostano i file del progetto, i relativi percorsi memorizzati all'interno si interromperanno e quindi dovremo fare un sacco di "patch up" manuali per risolverli.

C'è qualche strumento o una tecnica provata per fare qualcosa del genere?

risposta

1

Abbiamo fatto qualcosa di simile e per correggere i riferimenti, abbiamo scritto un'utilità rapida che analizza i file .csproj o .vbproj (che sono fondamentalmente file xml) e corregge i percorsi interessati in base a dove il file .proj stesso è stato individuato dopo il refactoring. questo era meglio che cambiare manualmente il progetto xml o aggiungere rimuovendo riferimenti per evitare errori umani.

Una volta che si conosce la posizione del file proj e dove saranno i file comuni (o altri file), si modifica il nodo di riferimento nel file di progetto con il percorso relativo. Così, per esempio, si potrebbe essere necessario modificare l'originale

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

nel file .proj a

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

se è lì che la NHibernate.dll vive ora.

Speriamo che questo funzioni per voi ragazzi.

+0

Grazie. Stavo anche pensando a creare un'utilità personalizzata per questo. Nell'esempio, si dimostra un problema leggermente diverso, in cui la cartella effettiva utilizzata per le DLL di riferimento potrebbe cambiare del tutto (non come risultato di un'operazione di copia/spostamento di .csproj). Hai gestito anche questo nella tua utilità? –

+0

Abbiamo gestito le modifiche alla cartella della libreria, non tutti i file proj sono stati spostati, ma anche se ciò dovesse accadere che non fosse la cartella della libreria ma che il file .csproj effettivo sia stato spostato relativamente, penserei che una logica simile possa ancora essere applicato. Per ogni insieme di file di progetto spostati insieme in una soluzione, si dovrebbe sapere come devono essere corretti i percorsi relativi a tali progetti. Forse è possibile creare una coppia di valori chiave di (prima, dopo) per ciascun riferimento per un insieme di file di progetto che apparterranno a una soluzione e aggiornare di conseguenza i file .proj. Spero che questo abbia un senso. – desigeek

Problemi correlati