2010-07-20 14 views
10

Sto cercando di trovare una spiegazione definitiva di quale effetto la compilazione in modalità di rilascio ha su un'applicazione Web .Net 3.5 rispetto a debug = "false". Finora sembra che l'impostazione debug = "false" abbia lo stesso effetto e la compilazione in modalità di rilascio sia stata ammortizzata, ma non riesco a trovare prove certe di questo.Modalità di rilascio vs Debug = "false"

Questa domanda sembrava promettente, ma sembra essere rispondere qual è la differenza tra il debug e build di rilascio, piuttosto che modalità di rilascio e di debug = "true": What's the difference between compilation debug="false" and Release mode?

Tuttavia lo fa un link a questo articolo: http://odetocode.com/blogs/scott/archive/2005/11/15/debug-and-release-builds-in-asp-net-2-0.aspx

"Questo nuovo modello di compilazione rende obsoleto il Gestore configurazione per un sito Web. L'unica opzione che appare in un" progetto "sito Web di Visual Studio 2005 è una configurazione Debug. Non preoccuparti, non significa niente. Il file web.config ora governa la scuola. "

Ora è il più vicino che ho avuto una risposta e sembra implicare che la modalità di rilascio è stata deprezzata a favore di debug = "false" ma non riesco a trovare alcuna conferma di ciò su MSDN o qualsiasi altra fonte.

Qualsiasi aiuto sarebbe molto apprezzato.

Aggiornamento

spiacenti; per chiarire questo è un "Progetto di applicazione Web" a cui mi riferisco.

di riformulare la mia domanda un po ', se ho la seguente impostazione nel web.config:

<compilation defaultLanguage="c#" debug="false">

Che effetto (se del caso) fa rilascio e la modalità di debug di compilazione hanno?

risposta

5

Devi stare attento alla scelta delle parole. Esistono progetti "Web Application" e "Web Site".

Non esiste una configurazione di "Release" per progetti "Sito Web". I siti Web utilizzano solo le impostazioni di debug nella sezione di compilazione di web.config. Se apri un "sito Web", nota che l'unica configurazione elencata in "Configuration Manager" è "Debug". È possibile controllare la compilazione dalla pagina delle proprietà "Opzioni di MSBuild" del progetto o tramite la finestra di dialogo "Pubblica sito Web".

Le configurazioni "Rilascio" e "Debug" funzionano come previsto per i progetti "Applicazione Web".

1

L'idea alla base della modalità "Rilascio" & La modalità "Debug" è che, in modalità di debug, la compilazione contiene simboli di debug utili per il debug ma non per la produzione, poiché rallenta il processo.

Tuttavia, la modalità 'Rilascio' rimuove questi simboli di debug pertanto il processo funziona correttamente senza alcun problema.

Ora, Microsoft ha implementato il suddetto modello nei progetti di applicazioni Web mentre il progetto del sito Web è leggermente diverso. Spero che questo ti aiuti.

6

TL; DR = La cosa più importante è compilazione debug = "true | false". Tuttavia, la compilazione in Debug ha anche un effetto minore sulle prestazioni.

La differenza tra Debug e Release (oltre a definire la costante DEBUG o meno) è il flag "Codice di ottimizzazione", che è disabilitato in Debug e abilitato in Release. (Se si guardano le impostazioni del progetto, scheda Crea.)

Il "codice Optimize" flag dice al compilatore lingua fare alcune ottimizzazioni (come la rimozione variabili inutilizzate, e tralasciando alcuni simboli di debug) quando si produce la DLL . Si tratta di un miglioramento delle prestazioni relativamente minore (forse un impatto maggiore in C++ rispetto a C#/VB) e una leggera riduzione nell'utilizzo della memoria DLL, rispetto a quando il flag non è impostato.

La compilazione debug = flag "true" indica al compilatore JIT che questo codice deve essere collegato per il debug. Ciò riduce le prestazioni in diverse dimensioni (tempo di caricamento, tempo di esecuzione, memoria e caricamento delle risorse) ma consente il debug del codice in esecuzione.

Se si desiderano tracce di stack più dettagliate in produzione, è possibile eseguire una compilazione di debug con compilation debug = "false" con poca differenza di prestazioni. Ma testerei le prestazioni di entrambi per essere sicuro di non perdere troppo.

Il credito appartiene a this answer che collega a this blog entry e successivamente ho trovato this one, che contiene tutte queste informazioni.

0

Ecco la differenza. Se si dispone di questo nel file web.config:

<system.web> 
    <compilation debug="true" .../> 

e si seleziona Release dal menu a discesa in Visual Studio (notare che sono in conflitto), sarebbe tutto essere compilato in modalità debug o modalità di rilascio?

Visual Studio non sa nulla sulla compilazione di un'applicazione web. Costruisci un'applicazione web e controlla la cartella bin e noterai che è vuota. Questo perché ASP.NET lo compila. ASP.NET utilizzerà il flag compilation debug dal file di configurazione per capire come compilare i file .cs, compilare moduli e controlli utente, ecc. Verrà inoltre utilizzato questo flag per decidere se eseguire il raggruppamento e la minimizzazione.

This article riassume abbastanza bene:

In conclusione, è possibile controllare il debug e rilascio costruisce utilizzando l'attributo debug della sezione compilation in web.config - a meno che non si sta precompilazione il sito web con il comando Pubblica o lo strumento di distribuzione dei siti Web. WSD ti consente di selezionare build di debug o release, precompilare il sito e modificare opportunamente web.config.