2016-05-12 18 views
12

Esiste un modo per precompilare le viste MVC ASP.NET in un'app Web di Azure (in particolare se pubblicate tramite Gestione versioni su VSTS)?Precompila viste ASP.NET MVC su Web App di Azure

Una volta colpita ogni vista, la pagina viene visualizzata molto rapidamente. Ma quel primo ritardo può essere un doozy per gli utenti e non c'è modo di script toccando ogni pagina.

non sono sicuro se ho bisogno di cambiare qualcosa nei processi di build/rilascio su VSTS (sto usando la fase Visual Studio Build accumulo e il compito Azure Web App release) o se ho bisogno di eseguire qualcosa sull'istanza Azure Web App dopo che è stato rilasciato (o qualcos'altro).

Sembra trovare un modo per chiamare aspnet_compiler dopo che la pubblicazione potrebbe essere ciò di cui ho bisogno (e l'ho visto in riferimento ai ruoli Web sui servizi cloud) ma non riesco a farlo funzionare.

Calling

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler -v "/" -p "d:\home\site\wwwroot" 

tramite la console nel portale Azure esegue bene (e trova errori se ce ne sono), ma non ha alcun impatto sul tempo di avvio - che colpisce la vista per la prima volta prende ancora tanto tempo.

Quindi forse non è la direzione giusta.

Ho guardato RazorGenerator (incluso il pacchetto .MSBuild nuget) e non riuscivo a farlo funzionare, ma in realtà ero esitante a fare tante modifiche ai progetti solo per ottenere la precompilazione al rilascio.

Nota anche che attualmente sto usando TFVC, non Git, in VSTS, quindi l'integrazione Kudu/Git (che sembra attivare la precompilazione secondo alcuni articoli) non è disponibile per quanto posso dire .

Altre idee?

+0

Mi chiedo se l'esecuzione di un test delle prestazioni Web basato sul cloud sul sito dopo l'attività di rilascio comporterà il primo rallentamento nelle visualizzazioni. – majita

risposta

15

È possibile aggiungere "/ p: PrecompileBeforePublish = true" argomento in "Visual Studio Build" step: enter image description here

allora il compito chiamerà aspnet_compiler durante il processo di costruzione e di generare un'uscita precompilato per la distribuzione.

+1

È possibile utilizzare l'argomento 'PrecompileBeforePublish' quando il servizio app di Azure è pubblicato direttamente tramite la chiamata' msdeploy.exe'? –

+0

Interessante. Mi era stato detto che non funzionava. Ma chiaramente lo fa. Bene, fantastico. Grazie! – Tim

+9

Questo creerà una DLL per vista. Se si aggiunge anche/p: UseMerge = true/p: SingleAssemblyName = AppCode all'argomento, si avrà solo una singola DLL, che è più veloce da caricare. –

0

In Visual Studio 2013+, selezionare Build-> Profili. Seleziona il profilo, quindi seleziona "Impostazioni". Sotto "Configurazione", espandere "Opzioni di pubblicazione file", quindi selezionare l'opzione "Precompila durante la pubblicazione".

+0

Inoltre, non dimenticare di deselezionare "Consenti al sito precompilato di essere aggiornabile". – Mik