Niedawno uaktualniliśmy nasz system kompilacji od VS 2013 do 2015 Update 2, a nasze czasy budowy znacznie wzrosły. Nasze środowisko kompilacji jest samoistne, więc uruchamiamy MSBuild z pakietu (używając devpath), a nie z zainstalowanej lokalizacji. Patrząc na logi, wydaje się, że wzrost czasu kompilacji prawie w całości dotyczy zadania kompilacji csc. Zainstalowanie MSBuild na maszynie nie ma żadnego wpływu, chociaż jeśli uruchamiamy z zainstalowanej lokalizacji, a nie z naszej niezależnej lokalizacji, czasy kompilacji są podobne do tego, co widzimy w 2013 roku. Podczas uruchamiania z zainstalowanej lokalizacji widzimy, że współdzielona kompilacja jest realizowana. używany z wiadomości "Używanie kompilacji współdzielonej z kompilatorem z katalogu: C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin". W tej chwili jesteśmy pod wrażeniem, że włączenie wspólnej kompilacji pomoże nam w naszych czasach kompilacji, ale nie byliśmy w stanie sprawić, by działała ona z naszego niezależnego środowiska. Ustawienie "UseSharedCompilation" na true nie ma wpływu i nie spowoduje wyświetlenia powyższego komunikatu podczas kompilacji.Używanie współdzielonej kompilacji z Roslyn w samodzielnym środowisku kompilacji?
Czy istnieje sposób na włączenie kompilacji współdzielonej z Roslyn podczas uruchamiania MSBuild ze ścieżki innej niż lokalizacja zainstalowana?
Obecnie widzimy ten sam problem dla aktualizacji VS 2017 z 2015 roku. Czy kiedykolwiek opracowałeś poprawkę? – GaTechThomas
Tak, zrobiliśmy. Wspólna kompilacja nie była naszym problemem. Ostatecznie musieliśmy uruchomić ngen.exe na csc.exe i większość dll zależy od tego. To wstępnie je kompiluje, więc kompilacja JIT nie zdarza się dla każdego połączenia exe. Visual Studio robi to podczas instalacji, ale jeśli umieścisz je w innym katalogu, musisz zrobić to ponownie, ponieważ wyszukuje je według lokalizacji. Właśnie dodaliśmy krok, gdy otworzyliśmy okno rejestracji, aby uruchomić ngen na potrzebnych plikach, ponieważ jest to dość szybkie. Bez niego csc.exe zajmowało około 10 sekund dla każdego połączenia. – Jperrigo
@Jperrigo: powinieneś dodać to jako odpowiedź na pytanie. Chciałem zostawić pytanie, nie zdając sobie sprawy, że znalazłeś odpowiedź: –