2010-10-14 15 views
12

Possiedo VS 2008 Professional e un progetto Smart C# .NET. Ho ~ 100 file cs in totale. La compilazione richiede molto tempo, devo aspettare per linker ca. 1min (60s) ogni volta che compilo il progetto. Ho Core i3, 4 GB di RAM, 7200rpm di disco.VS 2008 Professional, Smart Device Progetto .NET C# - build lento

Che cosa causa questo e come posso ottimizzare la compilazione? Qualche opzione di Visual Studio?

+2

C# non utilizza un linker. Cambia l'output di MSBuild in diagnostica e incolla le volte che vedi nella tua domanda. Strumenti + Opzioni, Progetto e soluzioni, Costruisci ed esegui. –

risposta

19

Se si segue il commento del commento di Hans Passant e si imposta MSBuild sull'output diagnostico, si otterrà un'immagine più chiara di ciò che sta prendendo il tempo. Se scopri che la tua build è appesa al Licensing Compiler (LC.exe), ciò potrebbe essere dovuto al tentativo di chiamare un server e il timeout. È possibile risolvere questo alterando il vostro machine.config -

edit c: \ windows \ microsoft.net \ Framework \ v2.0.50727 \ config \ machine.config, e aggiungere la seguente chiave:

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

EDIT: //

Sulla base del commento qui di seguito ho fatto un po 'di scavo. L'attività di verifica della piattaforma ha un problema noto in cui viene eseguito molto lentamente in VS2008. Maggiori dettagli su di esso può essere trovato qui:

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

Un modo per aggirare questo è quello di disabilitare il compito stesso nella vostra build. Per fare questo

1) Aprire il file:

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

per la modifica.

2) Vai alla linea che recita:

Name="PlatformVerificationTask"> 

e modificarla in:

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

3) Aggiungere la variabile di ambiente SkipPlatformVerification al sistema e impostarlo su "true" (Per riattivare la verifica della piattaforma, impostare la variabile di ambiente su "falso"). Se hai bisogno di aiuto per impostare una variabile d'ambiente leggi http://vlaurie.com/computers2/Articles/environment.htm. Se non vuoi aggiungere una variabile d'ambiente, puoi scambiare la condizione con qualcosa che è sempre falso (cioè Condizione = "'vero' == 'falso'")

+0

Ho controllato il livello diagnostico. Nel mio caso il PlatformVerificationTask richiede 290174 ms. Qual è il motivo? – cubesoft

+0

Ho trovato il file Microsoft.CompactFramework.Common.Targets nella cartella 3.5 anziché 2.0 % windir% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.CompactFramework.Common.targets – fefferoni

+0

Modifica ** ** a ** ** se non si desidera gestire le variabili di ambiente. –

3

Basta ridefinire un obiettivo nel tuo. file csproj come questo. Quindi funzionerà attraverso la macchina, o ovviamente potresti copiare l'intero blocco di codice con la linea condizionale aggiunta. In entrambi i casi, non è necessario modificare il file di sistema.

<Target Name="PlatformVerificationTask"></Target> 
Problemi correlati