2016-02-03 19 views
8

Possiedo un'applicazione MVB VNET.NET (4.6.1) MVC compilata con i nuovi compilatori Roslyn.ASP.NET: Roslyn lento sulle modifiche di pagina

Ogni volta che cambio un file (vbhtml) e ricarico la pagina ci vogliono circa 9 secondi per ricaricare la pagina. In questo tempo un vbc.exe e VBCSCompiler.exe sono in esecuzione:

enter image description here

non riuscivo a trovare alcun suggerimento di questo rallentamento delle prestazioni (con ANTS Profilo) e il mio sistema dovrebbe essere abbastanza veloce per gestire le richieste molto più veloci (Windows 10 x64, i7-2600, 16 GB di RAM, SSD Samsung per tutti i file).

Ho anche provato il nuovo Roslyn Builds, ma nulla è cambiato:

<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform"version="1.0.1" targetFramework="net452" /> 

qualsiasi idea, come posso ottenere migliori tempi di ricarica?

Update1: Quando si rimuove il pacchetto Microsoft.CodeDom.Providers.DotNetCompilerPlatform mia pagina tempo di ricarica scende a < 500ms!

+0

PS: ho disattivato anche l'Antivirussoftware senza risultati migliori. – Christoph

+0

Non stai solo ricaricando la pagina. Quando si modifica il codice, la versione compilata non è più rilevante. Quindi la prima richiesta a quella pagina causerà una ricompilazione, e quindi il ritardo. Se non si desidera il ritardo, è possibile precompilare il sito Web prima della distribuzione. – mason

+0

Ho i ritardi durante lo sviluppo del sito, quindi attendere 10 secondi ad ogni cambio (anche solo cambiando qualche html) mi sta facendo impazzire. La precompilazione mi aiuterebbe solo durante la distribuzione sul server, ma questo non è un problema mio, soprattutto perché le altre app mvc senza roslyn si caricano molto più velocemente. – Christoph

risposta

7

Il nuovo compilatore impiega diversi secondi per essere avviato poiché necessita di JIT molti assembly IL. Ngening del compilatore e dei suoi assembly di dipendenza contribuirebbe a ridurre il tempo di avvio. Che cosa si può fare è quello di trovare l'assemblaggio compilatore e fare

ngen.exe install VBCSCompiler.exe 
ngen.exe install csc.exe 
ngen.exe install vbc.exe 

Si avrebbe bisogno di eseguire i comandi di cui sopra da una console elevata. E potrebbe essere necessario utilizzare il ngen.exe a 64 bit se la tua macchina è a 64 bit. Normalmente il file ngen.exe a 64 bit si trova in C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319.

+0

Salve, il file VBCScompiler.exe non esiste nella mia cartella Framework/Framework64. E ho provato ad annullare l'exe dal mio webroot/bin/roslyn, un po 'il compilatore si blocca su tutti e 3 i file durante la compilazione di System.Reflection.Metadata. – Christoph

+0

Mi dispiace non essere stato chiaro. Con "64-bit exe" intendo ngen.exe. Il compilatore exe viene fornito con il pacchetto NuGet Microsoft.Net.Compilers. Può essere trovato nella cartella \ tools del pacchetto o nel webroot \ bin \ roslyn. Il blocco si è verificato quando hai ingannato quei file? Non l'ho visto sulla mia scatola. –

+0

Ciao, ho provato a ngen installare tutti e 3 gli ex nella cartella/bin/roslyn, ma tutti e 3 sono stati bloccati durante la compilazione :-( – Christoph

5

FYI, ho lavorato con Microsoft per una soluzione a questo, e non è così semplice come NGEN degli assembly. Ci sono due problemi su cui stanno lavorando per affrontarlo, uno di questi è nel compilatore stesso di Roslyn. È possibile tenere traccia di questo bug qui: https://github.com/dotnet/roslyn/issues/10413. Se l'altro bug si presenta su un tracker pubblico, sarò sicuro di collegarlo ad esso.

Problemi correlati