Volevo farmi chiarezza sulle modalità di precompilazione disponibili in asp.net 2.0, ho fatto qualche esperimento e mi sono scritto questo promemoria, sicuro che potrà essere utile a molti :
1) Precompilazione “in-place” : aspnet_compiler.exe –v /MySite
Compilo tutta la mia applicazione web che si trova nella virtual directory di nome /MySite.
Vengono creati tutti gli assembly per ciascuna cartella con risorse compilabili e vengono messi in
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\ MySite \...
La virtual directory della mia applicazione deve contenere tutti i file, sorgenti .cs compresi.
Tramite lo switch –p posso recupare il sito tramite il percorso fisico.
2) Precompilazione “updatable”: aspnet_compiler.exe –u –v /MySite <deploy directory>
Nella <deploy directory> copia tutte le risorse statiche(html, css, images, …) e tutte le risorse che non siano codice sorgente.
Inoltre crea una cartella \bin che contiene gli assembly risultanti dalla compilazione.
In pratica questa è la soluzione stile VS2003 dove tutto il codice “behind” veniva compilato in un unico assembly messo nella \bin, con la differenza che qui gli assembly creati sono uno per ogni sottocartella compilabile.
Questa cartella è pronta per essere copiata cosi sul server web di produzione e ho la possibilità di fare al volo le modifiche ai file aspx e ascx senza dover più ricompilare.
Anche in questo caso, una volta installata sul server di produzione, posso rieseguire il comando come nel punto 1 per poter precompilare il tutto, aspx e ascx compresi.
3) Precompilazione “non updatable”: aspnet_compiler.exe –v /MySite <deploy directory>
Questa modalità funziona come quella updatable con la sostanziale differenza che tutti i file aspx e ascx vengono copiati nella cartella di deploy vuoti.
Inoltre anche il file .skin dei temi non vengono copiati in quanto sono già creati come codice negli assembly.
Questa è la compilazione più protetta in quanto una volta eseguita non c’e’ modo di cambiare nulla sull’applicazione, se non a livello di web.config e/o immagini/stili.
Comunque per gestire al meglio il tutto e tramite una UI che non sia la console del dos, c’e’ disponibile per il download
il Web Deployment Project, con la relativa ed esaustiva documentazione.