2013-03-05 13 views
13

Vorrei precompilare un sito ASP.NET MVC 4, ma all'interno di un ruolo Web di Azure. È particolarmente interessante il modo in cui vengono rilevati gli errori di visualizzazione di cshtml.Precompila ASP.NET Progetto MVC in Azure (non con Web Deploy)

Questo è facile con Web Deploy, semplicemente selezionando un paio di caselle appropriate in Pubblica -> Opzioni di pubblicazione file.

Ma quando si dispone di più di 1 istanza di un WebRole, non si utilizzerà Web Deploy. E non vedo alcuna opzione all'interno delle impostazioni del progetto (nelle schede Build o Package/Publish Web) per specificare queste opzioni di compilazione di precompilazione.

Esiste un modo per specificare le opzioni di precompilazione a livello di progetto in qualche modo? Non sono appassionato né di alcuna opzione che richiederebbe di dover lasciare il flusso di lavoro di essere in grado di pubblicare in Azure con l'opzione "Pubblica su Windows Azure" semplice (ma lenta) (cioè non mi interessa dover in qualche modo manualmente carica il pacchetto cloud azzurro, per niente).

+0

@JWendel Ho trovato questo: http://msdn.microsoft.com/en-us/library/ms229863(v=vs.100).aspx. Una delle opzioni è: '-u', descritto come: "Specifica che Aspnet_compiler.exe dovrebbe creare un'applicazione precompilata che consenta aggiornamenti successivi di contenuti come le pagine .aspx." Non l'ho ancora provato e lo inseriresti nella scheda 'Crea eventi' -> 'Pre-build event command line'? –

+1

Non proprio Andrew, mi dispiace. Ho trovato questo: Razor Generator, ma è un passo radicale da fare a confronto, e ho dovuto fare una grande pulizia disordinata di esso dopo l'installazione, improvvisamente tutte le mie opinioni hanno avuto problemi (come il codice dinamico, anche ViewBag, stava generando errori). –

risposta

0

Avete controllato le proprietà del progetto di Azure per la vostra applicazione? Fare clic con il pulsante destro del mouse sul ruolo Web e fare clic su Proprietà. Penso che potrebbe avere precompilare le opzioni lì se non mi sbaglio.

+1

Grazie Albert, ma come ho detto: "Non vedo alcuna opzione all'interno delle impostazioni di Project (nelle schede Build o Package/Publish Web) per specificare queste opzioni di compilazione di precompilazione." Per intenderci, intendo nelle proprietà del progetto ASP.NET MVC.A tuo suggerimento, nel caso in cui intendessi questo, non ho controllato le impostazioni del servizio cloud, ma niente lì. Grazie comunque. –

6

Quanto segue potrebbe non essere tutto ciò che si desidera, e vorrei che il team di Visual Studio potesse aggiungere una semplice UI alle impostazioni del progetto per fare lo stesso (che potrebbe essere un compito molto banale), ma qui è un modo che ho trovato da quando ho fatto questa domanda per ottenere i file del rasoio cshtml compilati. Sfortunatamente però accade su ogni build, che è molto più lenta, ma se si imposta questo solo su Release, allora è un buon compromesso:

Vai alla cartella del progetto (clicca con il tasto destro del mouse su VS, -> Apri Cartella ...), individuare il file .csproj, aprirlo nel blocco note (++, ovviamente), quindi trovare alcuni PropertyGroup s nella radice di xml ('Progetto') a PropertyGroup con questa condizione, che specifica impostazioni specifiche modalità di rilascio solo (c'è un altro per il debug, che si può fare la stessa cosa su):

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    <MvcBuildViews>true</MvcBuildViews> 
    <NoWarn>162, 168, 169, 219, 414, 612, 618, 649, 1591</NoWarn> 
    </PropertyGroup> 

Basta aggiungere l'elemento MvcBuildViews (o modificare da fa se esiste già) e assicurati che il valore sia vero, e all'improvviso noterai che ogni build richiede molto più tempo [inserisci emoticon smiley wink qui]. Ma ottieni la compilazione del tuo codice rasoio, catturerà errori come volevi che fosse fatto, molto bello. Quindi il team ha già inserito questo, strano che non aggiungano l'opzione UI alle impostazioni del progetto MVC.

Immagino che questo risponda alla mia domanda iniziale: "C'è un modo per specificare le opzioni di precompilazione a livello di progetto in qualche modo?" Ho trovato la risposta che penso da qualche parte online, non ricordo dove ora, e sono sicuro che sia anche su SO da qualche altra parte. Grazie a David per chiarire nuovamente questa domanda.

Problemi correlati