Eventi
Creare app e agenti di intelligenza artificiale
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subitoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Le opzioni seguenti controllano la generazione del codice dal compilatore. La nuova sintassi di MSBuild viene visualizzata in Grassetto. La sintassi di csc.exe precedente è illustrata in code style
.
-debug
: genera (o non genera) informazioni di debug.-optimize
: abilita le ottimizzazioni.-deterministic
: genera un output equivalente byte per byte dalla stessa origine di input.-refonly
: genera un assembly di riferimento, anziché un assembly completo, come output primario.Nota
Per altre informazioni sulla configurazione di queste opzioni per il progetto, vedere Opzioni del compilatore.
L'opzione DebugType indica al compilatore di generare informazioni di debug e di inserirle nel file o nei file di output. Le informazioni di debug vengono aggiunte per impostazione predefinita.
<DebugType>pdbonly</DebugType>
Per tutte le versioni del compilatore a partire da C# 6.0, non esiste alcuna differenza tra pdbonly e full. Scegliere pdbonly. Per modificare il percorso del file .pdb, vedere PdbFile.
I valori validi sono i seguenti:
Valore | Significato |
---|---|
full |
Generare informazioni di debug nel .pdb usando il formato predefinito per la piattaforma corrente: Windows: un file pdb di Windows. Linux/macOS: un file Portable PDB. |
pdbonly |
Uguale a full . Per altre informazioni, vedere la nota seguente. |
portable |
Generare informazioni di debug nel file con estensione pdb usando il formato Portable PDB multipiattaforma. |
embedded |
Generare informazioni di debug nel file .dll/.exe stesso (il file .pdb non viene generato) usando formato Portable PDB. |
Importante
Le informazioni seguenti si applicano solo ai compilatori precedenti a C# 6.0.
Il valore di questo elemento può essere full
o pdbonly
. L'argomento full, effettivo se non si specifica pdbonly, consente di collegare un debugger al programma in esecuzione. Specificando pdbonly si consente il debug del codice sorgente quando il programma viene avviato nel debugger, ma l'assembler viene visualizzato solo se il programma in esecuzione è collegato al debugger. Usare questa opzione per creare build di debug. Se si usa Full, tenere presente che comporta un impatto sulla velocità e sulle dimensioni del codice ottimizzato JIT e un impatto ridotto sulla qualità del codice con full. Per la generazione di codice di versione, è consigliabile usare pdbonly o non usare alcun file PDB. Una differenza tra pdbonly e full sta nel fatto che con full il compilatore genera un DebuggableAttribute, che viene usato per indicare al compilatore JIT che le informazioni di debug sono disponibili. Di conseguenza, se nel codice DebuggableAttribute è impostato su false e si usa full, verrà restituito un errore. Per altre informazioni su come configurare le prestazioni di debug di un'applicazione, vedere Semplificazione del debug di un'immagine.
L'opzione Optimize abilita o disabilita le ottimizzazioni eseguite dal compilatore per ridurre le dimensioni del file di output e aumentarne la velocità e l'efficienza. L'opzione Ottimizzazione è attivata per impostazione predefinita in una configurazione di build di Release. È disattivata per impostazione predefinita per una configurazione di build Debug e qualunque altro tipo.
<Optimize>true</Optimize>
Hai impostato l'opzione Optimize dalla pagina delle proprietà di Compilazione per il progetto in Visual Studio.
L'opzione Optimize comunica poi a Common Language Runtime di ottimizzare il codice in fase di esecuzione. Per impostazione predefinita, le ottimizzazioni sono disabilitate. Per abilitare le ottimizzazioni, specificare Optimize+. Durante la compilazione di un modulo per l'uso da parte di un assembly, specificare per Optimize le stesse impostazioni usate per l'assembly. È possibile combinare le opzioni Optimize e Debug.
Fa sì che il compilatore generi un assembly il cui output byte per byte è identico in tutte le compilazioni se si usano input identici.
<Deterministic>true</Deterministic>
Per impostazione predefinita, l'output del compilatore che deriva da un set di input specifico è univoco, poiché il compilatore aggiunge un timestamp e un MVID (Module.ModuleVersionId, ovvero un GUID che identifica in modo univoco il modulo e la versione) generato da numeri casuali. L'opzione <Deterministic>
si usa per generare un assembly deterministico il cui contenuto binario è identico in tutte le compilazioni purché l'input rimanga lo stesso. In una compilazione di questo tipo, i campi relativi a timestamp e MVID verranno sostituiti con i valori derivati da un hash di tutti gli input di compilazione. Il compilatore considera gli input seguenti che influiscono sul determinismo:
-lib
o -recurse
).%LIBPATH%
, che può influenzare il caricamento delle dipendenze dell'analizzatore.La compilazione deterministica può essere usata per stabilire se un file binario viene compilato da un'origine attendibile. L'output deterministico può risultare utile quando l'origine è disponibile pubblicamente. Può anche determinare se le fasi di compilazione dipendenti dalle modifiche apportate al file binario sono usate nel processo di compilazione.
L'opzione ProduceOnlyReferenceAssembly indica che deve essere restituito un assembly di riferimento anziché un assembly di implementazione come output primario. Il parametro ProduceOnlyReferenceAssembly disabilita automaticamente l'output dei file PDB poiché non è possibile eseguire gli assembly di riferimento.
<ProduceOnlyReferenceAssembly>true</ProduceOnlyReferenceAssembly>
Gli assembly di riferimento sono un tipo di assembly speciale. Gli assembly di riferimento contengono solo la quantità minima di metadati necessari per rappresentare la superficie API pubblica della libreria. Includono dichiarazioni per tutti i membri significativi per fare riferimento a un assembly negli strumenti di compilazione, ma escludono tutte le implementazioni dei membri e le dichiarazioni dei membri privati che non hanno alcun impatto osservabile sul contratto API. Per altre informazioni, vedere Assembly di riferimento.
Le opzioni ProduceOnlyReferenceAssembly e ProduceReferenceAssembly si escludono a vicenda.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
Eventi
Creare app e agenti di intelligenza artificiale
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subito