Ho un grande file di soluzione c # (~ 100 progetti) e sto cercando di migliorare i tempi di compilazione. Penso che "Copy Local" sia uno spreco in molti casi per noi, ma mi chiedo quali siano le migliori pratiche.
Nel nostro .sln, abbiamo l'applicazione A che dipende dal gruppo B che dipende dal gruppo C. Nel nostro caso, ci sono dozzine di "B" e una manciata di "C". Dato che questi sono tutti inclusi in .sln, stiamo usando riferimenti di progetto. Tutti gli assembly attualmente compilano in $ (SolutionDir) / Debug (o Release).
Per impostazione predefinita, Visual Studio contrassegna questi riferimenti di progetto come "Copia locale", il che comporta che ogni "C" viene copiata in $ (SolutionDir) / Debug una volta per ogni "B" che viene generata. Sembra uno spreco. Cosa può andare storto se disattivo "Copia locale"? Cosa fanno le altre persone con sistemi di grandi dimensioni?
AZIONE SUPPLEMENTARE:
Molte risposte suggeriscono di suddividere la build in file .sln più piccoli ... Nell'esempio sopra, prima creerei le classi di base "C", seguite dalla maggior parte dei moduli "B", e quindi alcune applicazioni " UN". In questo modello, ho bisogno di avere riferimenti non di progetto a C da B. Il problema in cui mi imbatto è che "Debug" o "Release" vengono inseriti nel percorso del suggerimento e finisco per costruire le build di "B" di Release contro build di debug di "C".
Per quelli di voi che hanno diviso il build up in più file .sln, come gestite questo problema?
<Private>True</Private>
di un csproj?
.sln
in una più piccola interrompe il calcolo automagico dell'interdipendenza di VS di <ProjectReference/>
s. Sono passato da più piccoli .sln
più a un singolo grande .sln
solo perché VS causa meno problemi in quel modo ... Quindi, forse il follow-up sta assumendo una soluzione non necessariamente migliore alla domanda originale? ;-)