2013-02-14 16 views
7

Abbiamo un progetto e vorremmo costruire le viste per generare errori di compilazione se c'è qualcosa di sbagliato nei file .cshtml di Views.ASP.Net MVC MvcBuildViews aumentando drasticamente il tempo di compilazione

Eppure, compilare tempo aumenta drasticamente:

  • MvcBuildViews = true prende 62 secondi
  • MvcBuildViews = false prende 9 secondi

È questo qualcosa di accettabile? Perché l'aumento è abbastanza drastico in cui non possiamo sopportare di dover attendere tempi di compilazione simili. In che modo possiamo migliorare questa compilation?

Il progetto fino ad ora è composto da 130 Visualizzazioni & Viste parziali (file .cshtml). Questo è considerato grande/medio/piccolo?

+0

http://www.luisrocha.net/2011/10/avoiding-mvcbuildviews-build-time.html –

+0

Prova alternativa di StackOverflow: [StackExchange.Precompilation] (https://stackoverflow.com/a/35977582/1141876) – fiat

risposta

2

Abbiamo avuto lo stesso problema. Abbiamo iniziato a compilare le viste al fine di cogliere i problemi evidenti che ci avrebbero insinuato durante i test di integrazione e . Peggio ancora erano gli insetti che in qualche modo si insinuavano nella produzione.

Ma, come avete notato, i nostri tempi di costruzione è diventato intollerabile. Come te, i nostri sviluppatori costruiscono innumerevoli volte e questa è diventata una parte importante dei nostri giorni. Avevamo battute sul test dopo pranzo, quindi la build poteva essere fatta mentre eravamo fuori.

Infine, siamo passati all'edificio prima degli test UX.

Ora ci stiamo muovendo verso pre-compilazione. Solo un ragazzo nella nostra squadra ha adottato per ora e apparentemente pre-compilazione sono noticably meglio costruisce (incrementale vs totale). E l'installazione è fondamentalmente una raccolta nuget.

Questi articoli dovrebbero essere un buon inizio

http://stacktoheap.com/blog/2013/01/19/precompiling-razor-views-in-asp-dot-net-mvc-3/

http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

+0

Grazie, verificherò! :) –

11

Beh Penso che avere la possibilità di compilare il punto di vista è una buona cosa da sé, ma non posso aspettare così a lungo sia. Quindi quello che preferisco fare è aggiungere che MvcBuildViews = true all'interno del ProperyGroup di uscita in modo che si compila solamente i punti di vista, al momento di uscita e prima della distribuzione

Il gruppo di proprietà dovrebbe essere simile a questo:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

Quindi metti il ​​tuo

<MvcBuildViews>true</MvcBuildViews> 

All'interno di questo blocco di rilascio. in questo modo continui a compilare le tue visualizzazioni una sola volta e non tutte le volte che provi a eseguire il debug ...

+0

Abbiamo usato anche questo approccio. Legittimo. –

0

Imposta MvcBuildViews su false nel csproj per la configurazione di debug.

<MvcBuildViews Condition=" '$(Configuration)' != 'Debug' ">true</MvcBuildViews> 

Aggiungere il seguente comando esterno nel menu "Strumenti/Strumenti esterni"

Title: Compile with MVC views 
Command: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe 
Arguments: $(SolutionDir)$(SolutionFileName) /p:MvcBuildViews=true 
Initial directory: $(SolutionDir) 
Use Output window: checked 

quindi aggiungere un collegamento a tale: Andate in Strumenti/Opzioni/environnement/tastiera Individuare gli strumenti di comando " .ExternalCommandX "dove X è la posizione del tuo comando esterno in cui l'hai appena aggiunto. Assegnare un tasto (Es: Ctrl-shift-1)

Ora le spiegazioni: Abbiamo lo stesso problema. Non vogliamo compilare le visualizzazioni il più delle volte, ma ci piace compilarle prima di controllare il codice, in questo modo compiliamo le visualizzazioni 1 volta su 50 o qualcosa del genere. Per ottenere ciò, ho aggiunto un comando di strumento esterno a msbuild con il parametro mvcbuildviews. L'unico inconveniente è che gli errori non sono elencati nella finestra degli errori di Visual Studio, devi guardare la finestra di output e fare doppio clic sugli eventuali errori.

Problemi correlati