Precompilazione sito

giovedì 18 ottobre 2012 - 11.38
Tag Elenco Tags  C#  |  .NET 4.0  |  Visual Studio 2010

andrestu Profilo | Expert

Salve a tutti,
nel leggere quanto indicato sul MSDN a questo indirizzo http://msdn.microsoft.com/it-it/library/20yh9f1b%28v=vs.100%29.aspx
non trovo un riferimento esatto al punto 5 del paragrafo "Per pubblicare un progetto di sito Web" e cioè seguendo le indicazioni descritte non trovo la voce "Consenti aggiornamento del sito precompilato"
a questo punto vorrei capire se come impostazione predefinita il mio progettto viene pubblicato come aggiornabile o no.
Premetto che utilizzo Visual Studio 2010, sul vostro Visual Studio trovate la voce "Consenti aggiornamento del sito precompilato" ???

Andrea Restucci - Web Developer

bludev Profilo | Newbie

Come scritto nella nota nel link da te riportato, "Le informazioni contenute in questo argomento sono valide solo per i progetti di sito Web. Per informazioni sulla differenza tra i progetti di applicazione Web e quelli di sito Web, vedere Confronto tra progetti di applicazione Web e progetti di sito Web.".

L'impostazione che tu cerchi c'è solo se il sito è stato creato con "File/New web site" (nella versione in italiano sarà "File/Nuovo sito web" presumo). Se invece il tuo sito è stato creato con "File/New project/ASP.NET web application" o similari, tale impostazione non serve in quanto i file aspx dopo la pubblicazione sono aggiornabili senza la necessità di ricompilare il progetto.
---
Fabio Turrin - Bludev - http://www.bludev.it/

andrestu Profilo | Expert

Ok grazie per il chiarimento, a questo punto ti chiedo:
esiste un modo per rendere NON aggiornabili i file aspx utilizzando come tipo di progetto una "Web Application" ?

Andrea Restucci - Web Developer

Gluck74 Profilo | Guru

>tale impostazione non serve in quanto i file aspx dopo la pubblicazione sono aggiornabili
>senza la necessità di ricompilare il progetto.
>---
>Fabio Turrin - Bludev - http://www.bludev.it/


Forse volevi dire NON sono aggiornabili per le "Web Application" (io uso VS2010)
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

bludev Profilo | Newbie

>Forse volevi dire NON sono aggiornabili per le "Web Application"
>(io uso VS2010)
>____________
>http://glucolo.wordpress.com

Leggendo qui (http://msdn.microsoft.com/it-it/library/20yh9f1b%28v=vs.100%29.aspx) in effetti risulta che la modifica di un singolo file aspx richiede la ricompilazione della web application. Io però ho esperienze recentissime (ieri) dove alcuni file aspx di una web application da me pubblicata sono stati modificati da un collega, il quale non usa Visual Studio. Ovviamente si è limitato a modificare alcuni tag html, non ha toccato i controlli asp.net. Dopo l'upload con ftp, non si sono riscontrati problemi e l'applicazione funziona perfettamente.
---
Fabio Turrin - Bludev - http://www.bludev.it/

andrestu Profilo | Expert

si confermo quanto dice bludev, è per qesto che pongo il quesito, io vorrei pubblicare la mia web application in modo che non siano ne leggibili ne aggiornabili neanche i file aspx.
e sinceramente mi sembra un pò assurdo non ci sia una modalità, dopotutto si tratta di una ulteriore protezione sulla proprietà dei file...

Gluck74 Profilo | Guru

>io vorrei pubblicare la mia web application in modo che non siano
>ne leggibili ne aggiornabili neanche i file aspx.
io allora ho il problema opposto!!!!!!!!
facendo la pubblicazione standard, i miei file aspx NON sono modificabili!!!!


____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

andrestu Profilo | Expert

> facendo la pubblicazione standard, i miei file aspx NON sono modificabili!!!!

ma usi una web application o sito web ???

Andrea Restucci - Web Developer

Gluck74 Profilo | Guru

Web Application
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

andrestu Profilo | Expert

bo allora cè qualcosa di strano, ripeto il test magari mi sbaglio ....

Andrea Restucci - Web Developer

bludev Profilo | Newbie

Allora, la cosa mi ha incuriosito parecchio e mi sono documentato un po'.

In questo link:
http://msdn.microsoft.com/en-us/library/aa983464.aspx
si dice che
"By default, code files in a web application project are precompiled into a single assembly by using the Microsoft Build Engine (MSBuild). ASP.NET web pages (.aspx), user controls (.ascx), and MVC Razor views (.cshtml and .vbhtml) are compiled dynamically on the server by the ASP.NET compiler."

Più in basso si aggiunge:
"Although code files in the project are precompiled into a single assembly by using MSBuild, ASP.NET web pages (.aspx), user controls (.ascx), and MVC Razor views (.cshtml and .vbhtml) of a web application project are compiled dynamically on the server by the ASP.NET compiler. This means that you can make limited changes to the ASP.NET web pages, user controls, and Razor Views in your site after they have been compiled and deployed. For example, you can change the arrangement of controls, colors, fonts, and other appearance aspects of pages. When the site receives its first request for a page after you have made such a change, ASP.NET recompiles the changed files."

Fino a qui è in linea con quanto sperimentato, sia da me che da andrestu.

Seguendo una serie di link sono arrivato a questa pagina:
http://blogs.msdn.com/b/webdev/archive/2010/05/26/visual-studio-2010-web-deployment-projects-rtw-available-now.aspx

"Web Deployment Projects" è una estensione per VS2010 (ma esiste anche per VS2008 e VS2005) che permette queste funzionalità:
* ASP.NET 2.0 precompilation as part of the build process.
* More flexible options for generating compiled assemblies from a Web project, including these alternatives:
* A single assembly for the entire Web site.
* One assembly per content folder.
* A single assembly for all UI components.
* An assembly for each compiled file in the Web site.
* Assembly signing options.
* The ability to define custom pre-build and post-build actions.
* The ability to exclude folders from the build.
* The ability to modify settings in the Web.config file, such as the <connectionString> element, based on the Visual Studio build configuration.
* Support for creating .msi files with setup projects.

Per maggiori dettagli sulle funzionalità si veda questo link:
http://msdn.microsoft.com/en-us/library/aa479568.aspx

---
Fabio Turrin - Bludev - http://www.bludev.it/

andrestu Profilo | Expert

ok GRAZIE MILLE bludev !!!,
ho scaricato e installato il WebDeployment per VS2010, ora mi esce la schermata dove posso fare le diverse scelte.
l'unico inconveniente è che ho dei problemi durante la fase di compilazione se escludo dal progetto una specifica cartella.
Ho una solution con all'interno due progetti, ovviamente se faccio la compilazione o dell'intera solution o dei singoli progetti non ho nessun problema. Successivamente, dopo aver installato il WebDeployment, ho appunto aggiunto alla solution il progetto WebDeployment, e fin qui tutto ok. se però escludo per esempio da uno dei due progetti una specifica cartella che contiene pagie aspnet e poi vado a fare la compilazione del progetto "WebDeployment" mi ritorna un errore

Error 1 Could not load type 'ARWebSite.Test.SubMasterTest'. /ARWebSite.csproj/Test/SubMasterTest.master 1 1 ARWebSite.csproj_deploy

ma non ha senso, questo file è contenuto in una cartella che è stata eslusa dal progetto quindi non dovrebbe proprio procesarla, hai una vaga idea di quale potrebbe essere il problema ???

Andrea Restucci - Web Developer

andrestu Profilo | Expert

ok ho capito che se voglio fare la build con il web deployment project non posso escludere delle cartelle contenenti codice altrimenti mi genera un errore dicendomi che non trova il tipo X, per esclusione io intendo quelle cartelle che risultano di colore sbiadito per intenderci tasto destro "exclude from project". Cioè ogni volta che devo fare la compilazione devo reincludere a forza tutti i file che per una ragione o l'altra ho esclusa dal progetto (copie di backup e quantaltro) con le controindicazioni del caso. no no non ci siamo proprio, non capisco come alle volte mamma Microsoft possa fare queste cagate così esuberanti, cioè un processo che dovrebbe essere basilare (pubblicare un progetto senza dare la possibilità di fare upgrade) sta risultando un impresa titanica.
ho trovato questo post che indica come effettuare l'esclusione
http://blogs.msdn.com/b/webdev/archive/2010/04/22/web-deployment-excluding-files-and-folders-via-the-web-application-s-project-file.aspx
a parte che non funziona ma comunque in ogni caso risulterebbe lo stesso macchinoso per il discorso di prima, continuo la ricerca di possibili efficaci soluzioni, se trovate qualcosa in merito fate sapere grazie...

Andrea Restucci - Web Developer

andrestu Profilo | Expert

ok ho trovato la soluzione
allora il link postato precedentemente fornisce un metodo non valido, questo è quello corretto, in questo modo si possono mantenere anche le cartelle escluse dal progetto:

http://weblogs.asp.net/scottgu/archive/2005/11/06/429723.aspx

in particolare la sezione che interessa l'esclusione:

<ItemGroup>
<ExcludeFromBuild Include="$(SourceWebPhysicalPath)\Test\**\*.*"/>
</ItemGroup>

sarebbe stato meglio che la procedura fosse più automatizzata ma forse chiedo troppo per il momento me ne sto così...

Andrea Restucci - Web Developer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5