Mam duży plik rozwiązania C # (~ 100 projektów) i próbuję poprawić czas kompilacji. Myślę, że „Kopiuj lokalnie” w wielu przypadkach jest dla nas marnotrawstwem, ale zastanawiam się nad najlepszymi praktykami.
W naszym .sln mamy aplikację A zależną od zespołu B, która zależy od zespołu C. W naszym przypadku mamy dziesiątki "B" i garść "C". Ponieważ są one zawarte w .sln, używamy odwołań do projektów. Wszystkie zestawy są obecnie kompilowane w $ (SolutionDir) / Debug (lub Release).
Domyślnie program Visual Studio oznacza te odwołania do projektów jako „Kopiuj lokalne”, co powoduje, że każde „C” jest kopiowane do $ (SolutionDir) / Debug raz na każde „B”, które jest kompilowane. Wydaje się to marnotrawstwem. Co może się nie udać, jeśli wyłączę opcję „Kopiuj lokalnie”? Co robią inne osoby z dużymi systemami?
NASTĘPUJĄCE:
Wiele odpowiedzi sugeruje rozbicie kompilacji na mniejsze pliki .sln ... W powyższym przykładzie najpierw zbudowałbym klasy podstawowe „C”, a następnie większość modułów „B”, a następnie kilka aplikacji, „ ZA". W tym modelu potrzebuję odwołań niezwiązanych z projektem do C z B. Problem, który tam napotykam, polega na tym, że „Debugowanie” lub „Wydanie” jest wypalane w ścieżce podpowiedzi i kończy się budowanie moich kompilacji wydania „B” przeciwko kompilacjom debugowania „C”.
Dla tych z Was, którzy podzielili kompilację na wiele plików .sln, jak poradzicie sobie z tym problemem?
<Private>True</Private>
w przypadku csproj?
.sln
na mniejsze łamie automagii obliczenia współzależności vs dotyczącą <ProjectReference/>
s. Sam przeniosłem się z wielu mniejszych .sln
na jeden duży, .sln
tylko dlatego, że VS powoduje w ten sposób mniej problemów… Może więc w dalszej części przyjmuję niekoniecznie najlepsze rozwiązanie pierwotnego pytania? ;-)