2012-04-11 14 views
9

La nostra app, distribuita tramite ClickOnce, impiega in media 10,8 secondi per avviarsi. Dopo aver eseguito ngen sull'exe (nella directory in cui ClickOnce lo ha installato), si avvia in 6,4 secondi in media. Ovviamente si tratta di un enorme aumento di velocità (40%) e, se possibile, vorrei fare uso di ngenificazione.È possibile pre-generare immagini NGen in modo che i clienti non debbano farlo?

risposta di Ron per Is it possible to use NGen with ClickOnce deployment? mostra come si può fare sulla macchina del cliente, assumendo Credo che corre Windows XP, come vuole diritti di amministratore sul mio 7 scatola di Windows, in modo che non sembra come una soluzione generica.

Inoltre, ngen prende 40 secondi sulla mia scatola per compilare tutti gli assembly appartenenti a quell'app.

Quindi, idealmente, mi piacerebbe pre-ngen la nostra app per tutte le (principali) architetture come parte del processo di costruzione, quindi potrebbe essere spedito al cliente senza che l'utente debba accettare un "ok per eseguire come amministratore? " popup e quindi attendere 40 secondi.

È possibile?

+0

L'uscita NGen è specifica per l'architettura. E poiché è improbabile che la tua macchina di compilazione corrisponda al/ai macchina/i di produzione, questo probabilmente non funzionerà come speri. –

+0

@CodyGray Come accennato nella mia domanda, sarei disposto a pre-ngen per tutte le principali architetture. Se abbiamo fatto solo x86 e amd64 che dovrebbero coprire il 95% dei clienti, immagino ... –

risposta

9

Non si può fare questo senza accesso amministrativo su Windows 7.

Il problema non è la generazione ngen effettiva dell'immagine nativa ma l'installazione nella cache delle immagini native (C: \ windows \ assembly \ nativeImages_v # xxxxxxxxx) che richiede autorizzazioni amministrative. Pertanto, anche se si è trovato un modo per pre-generare le immagini native per tutte le architetture di destinazione, non sarebbe possibile ottenerle nella posizione appropriata affinché il runtime consideri di utilizzarle.

Non puoi semplicemente metterli uno di fianco all'altro con i tuoi binari normali perché non sarebbero gestiti correttamente - ti troverai nei guai quando vengono apportate alcune modifiche ai criteri di sicurezza. applicate o altre modifiche agli assembly referenziati che invalidano le immagini native e richiedono l'esecuzione di un comando "ngen update". Microsoft non sembra supportare il caso d'uso di ngen con la distribuzione ClickOnce in questo momento.

+0

Qualcosa (google) mi dice che hai ragione, ma aspettiamo un po ', forse qualcosa si presenta. Dopotutto, nonostante le affermazioni di MS "al contrario, la risposta a http://stackoverflow.com/questions/443955 ha dimostrato che è possibile, almeno per Windows XP. Certo, XP non è qualcosa su cui un'applicazione ClickOnce dovrebbe fare affidamento in questi giorni ... –

Problemi correlati