2010-10-14 16 views
12

Mam VS 2008 Professional i projekt Smart Device .NET C#. Mam łącznie ~ 100 plików cs. Budowa zajmuje bardzo dużo czasu, muszę czekać na linker ok. 1min (60s) za każdym razem, gdy kompiluję projekt. Mam dysk Core i3, 4 GB RAM, 7200rpm.VS 2008 Profesjonalne, inteligentne urządzenie Projekt .NET C# - wolna kompilacja

Co powoduje to i jak mogę zoptymalizować kompilację? Wszelkie opcje Visual Studio?

+2

C# nie używa łącznika. Zmień wyjście MSBuild na diagnostyczne i wklej czasy, które widzisz w swoim pytaniu. Narzędzia + opcje, projekt i rozwiązania, kompilacja i uruchamianie. –

Odpowiedz

19

Jeśli zastosujesz się do rady z komentarza Hansa Passanta i ustawisz MSBuild na wyjście diagnostyczne, uzyskasz jaśniejszy obraz tego, co zajmuje dużo czasu. Jeśli okaże się, że kompilacja jest zawieszona na kompilatorze licencjonowania (LC.exe), może to być spowodowane próbą połączenia się z serwerem i przekroczeniem limitu czasu. Można rozwiązać ten problem poprzez zmianę swój machine.config -

edit c: \ windows \ microsoft.net \ Framework \ v2.0.50727 \ config \ machine.config i dodaj następujący klucz:

<configuration> 
    <runtime> 
     <generatePublisherEvidence enabled="false"/> 

EDYTOWANIE: //

Na podstawie komentarza poniżej zrobiłem trochę kopania. Zadanie weryfikacji platformy ma znany problem, który działa bardzo wolno w VS2008. Więcej szczegółów na jej temat można znaleźć tutaj:

http://blogs.msdn.com/b/vsdteam/archive/2006/09/15/756400.aspx

Jednym ze sposobów obejścia tego problemu jest wyłączenie samego zadania w swojej budowie. Aby to zrobić

1) Otwórz plik:

%windir%\Microsoft.NET\Framework\v2.0.50727\Microsoft.CompactFramework.Common.Targets 

do edycji.

2) Przejdź do wiersza, który brzmi:

Name="PlatformVerificationTask"> 

i zmień ją na:

Name="PlatformVerificationTask" Condition="'$(SkipPlatformVerification)' != 'true'"> 

3) Dodaj zmienną środowiskową SkipPlatformVerification do systemu i ustaw ją na "true" (Aby ponownie włączyć weryfikację platformy, ustaw zmienną środowiskową na "false"). Jeśli potrzebujesz pomocy przy ustawianiu zmiennej środowiskowej przeczytaj http://vlaurie.com/computers2/Articles/environment.htm. Jeśli nie chcesz dodawać zmiennej środowiskowej, możesz zamienić warunek na coś, co zawsze jest fałszywe (tj. Condition = "true" == "false" ")

+0

Sprawdziłem poziom diagnostyczny. W moim przypadku PlatformVerificationTask ma 290174 ms. Jaki jest powód? – cubesoft

+0

Znalazłem plik Microsoft.CompactFramework.Common.Targets w folderze 3.5 zamiast 2.0 % windir% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.CompactFramework.Common.targets – fefferoni

+0

Zmień ** ** to ** ** jeśli nie chcesz zajmować się zmiennymi środowiskowymi. –

3

Po prostu ponownie zdefiniuj cel w swoim. Plik csproj podobny do tego. Wtedy będzie działać na całej maszynie, Lub oczywiście możesz skopiować cały blok kodu z dodaną linią warunkową. W obu przypadkach nie trzeba modyfikować pliku systemowego.

<Target Name="PlatformVerificationTask"></Target> 
Powiązane problemy