C#-Compileroptionen zum Melden von Fehlern und Warnungen
Mit den folgenden Optionen wird gesteuert, wie der Compiler Fehler und Warnungen meldet. Die neue MSBuild-Syntax wird fett formatiert dargestellt. Die ältere csc.exe-Syntax wird in code style dargestellt.
- WarningLevel /
-warn: Legt die Warnstufe fest. - AnalysisLevel: Festlegen optionaler Warnstufe.
- TreatWarningsAsErrors /
-warnaserror: Behandelt alle Warnungen als Fehler. - WarningsAsErrors /
-warnaserror: Behandelt mindestens eine Warnung als Fehler. - WarningsNotAsErrors /
-warnnotaserror: Behandelt mindestens eine Warnung nicht als Fehler. - DisabledWarnings /
-nowarn: Legt eine Liste deaktivierter Warnungen fest. - CodeAnalysisRuleSet /
-ruleset: Gibt eine Regelsatzdatei an, die bestimmte Diagnosefunktionen deaktiviert. - ErrorLog /
-errorlog: Gibt eine Datei für das Protokollieren der gesamten Compiler- und Analysetooldiagnose an. - ReportAnalyzer /
-reportanalyzer: Melden Sie zusätzliche Analyseinformationen, z. B. ausführungszeit.
WarningLevel
Die Option WarningLevel gibt die vom Compiler anzuzeigende Warnstufe an.
<WarningLevel>3</WarningLevel>
Der Elementwert ist die Warnstufe, die Sie für die Kompilierung anzeigen möchten: Niedrigere Zahlen zeigen nur Warnungen mit hohem Schweregrad an. Höhere Werte zeigen mehr Warnungen an. Der Wert muss 0 (null) oder eine positive ganze Zahl sein:
| Warnstufe | Bedeutung |
|---|---|
| 0 | Deaktiviert die Ausgabe aller Warnungmeldungen |
| 1 | Zeigt schwerwiegende Warnmeldungen an |
| 2 | Zeigt Warnungen der Stufe 1 sowie bestimmte, weniger schwerwiegende Warnungen an, z.B. Warnungen zum Ausblenden von Klassenmembern |
| 3 | Zeigt Warnungen der Stufe 2 sowie bestimmte, weniger schwerwiegende Warnungen an, z.B. Warnungen zu Ausdrücken, immer nach true oder false ausgewertet werden |
| 4 (Standard) | Zeigt die Warnungen aller drei Stufen sowie informative Warnungen an |
Warnung
Die Compilerbefehlszeile akzeptiert Werte, die größer als 4 sind, um Warnwellenwarnungen zu aktivieren. Das .NET SDK legt jedoch den WarningLevel so fest, dass er mit dem AnalysisLevel in Ihrer Projektdatei übereinstimmt.
Um Informationen zu einem Fehler oder einer Warnung abzurufen, können Sie den Fehlercode im Hilfeindex nachschlagen. Andere Möglichkeiten zum Abrufen von Informationen zu einem Fehler oder einer Warnung finden Sie unter C#-Compilerfehler. Verwenden Sie TreatWarningsAsErrors, um alle Warnungen als Fehler zu behandeln. Verwenden Sie DisabledWarnings, um bestimmte Warnungen zu deaktivieren.
Analyseebene
| Analyseebene | Bedeutung |
|---|---|
| 5 | Zeigt alle optionalen Warnungswellen 5-Warnungen an. |
| 6 | Zeigt alle optionalen Warnungswellen 6 Warnungen an. |
| 7 | Zeigt alle optionalen Warnungswellen 7-Warnungen an. |
| neueste (Standard) | Zeigt alle Informationswarnungen bis hin zu und einschließlich der aktuellen Version an. |
| preview | Zeigt alle Informationswarnungen bis hin zu und einschließlich der neuesten Vorschauversion an. |
| Keine | Deaktiviert alle Informationswarnungen. |
Weitere Informationen zu optionalen Warnungen finden Sie unter Warnungswellen.
Um Informationen zu einem Fehler oder einer Warnung zu erhalten, schlagen Sie den Fehlercode im Hilfeindex nach. Andere Möglichkeiten zum Abrufen von Informationen zu einem Fehler oder einer Warnung finden Sie unter C#-Compilerfehler. Verwenden Sie TreatWarningsAsErrors, um alle Warnungen als Fehler zu behandeln. Verwenden Sie DisabledWarnings, um bestimmte Warnungen zu deaktivieren.
TreatWarningsAsErrors
Mit der Option TreatWarningsAsErrors werden alle Warnungen als Fehler behandelt. Sie können TreatWarningsAsErrors auch verwenden, um nur einige Warnungen als Fehler festzulegen. Wenn Sie "TreatWarningsAsErrors" aktivieren, können Sie WarnungenNotAsErrors verwenden, um Warnungen aufzuführen, die nicht als Fehler behandelt werden sollten.
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
Alle Warnmeldungen werden stattdessen als Fehler gemeldet. Der Buildprozess wird angehalten (es werden keine Ausgabedateien erstellt). Standardmäßig ist TreatWarningsAsErrors nicht aktiviert, was bedeutet, dass Warnungen die Generierung einer Ausgabedatei nicht verhindern. Wenn nur bestimmte Warnungen als Fehler behandelt werden sollen, können Sie optional eine durch Trennzeichen getrennte Liste mit Warnungsnummern angeben, die als Fehler behandelt werden sollen. Die Gruppe aller Warnungen zur Zulassung von Nullwerten können mithilfe der Kurzform Nullable angegeben werden. Verwenden Sie WarningLevel, um die Warnstufe anzugeben, die vom Compiler angezeigt werden soll. Verwenden Sie DisabledWarnings, um bestimmte Warnungen zu deaktivieren.
Wichtig
Es gibt zwei subtile Unterschiede zwischen der Verwendung des <TreatWarningsAsErrors> Elements in Der csproj-Datei und der Verwendung des warnaserror Befehlszeilenschalters MSBuild. TreatWarningsAsErrors wirkt sich nur auf den C#-Compiler aus, nicht auf andere MSBuild Aufgaben in Ihrer csproj-Datei. Der warnaserror Befehlszeilenwechsel wirkt sich auf alle Aufgaben aus. Zweitens erzeugt der Compiler keine Ausgabe für Warnungen, wenn TreatWarningsAsErrors verwendet wird. Der Compiler erzeugt die Ausgabe, wenn der warnaserror Befehlszeilenschalter verwendet wird.
WarningsAsErrors und WarningsNotAsErrors
Die Optionen WarningsAsErrors und WarningsNotAsErrors setzen die Option TreatWarningsAsErrors für eine Liste von Warnungen außer Kraft. Diese Option kann mit allen CS-Warnungen verwendet werden. Das Präfix „CS“ ist optional. Sie können entweder die Nummer oder "CS" gefolgt von der Fehler- oder Warnstufe verwenden. Weitere Elemente, die Warnungen betreffen, finden Sie in den allgemeinen MSBuild-Eigenschaften.
Aktivieren der Warnungen 0219 und 0168 als Fehler:
<WarningsAsErrors>0219,CS0168</WarningsAsErrors>
Deaktivieren derselben Warnungen als Fehler:
<WarningsNotAsErrors>0219,CS0168</WarningsNotAsErrors>
Sie verwenden WarningsAsErrors, um einen Satz von Warnungen als Fehler zu konfigurieren. Verwenden Sie WarningsNotAsErrors, um einen Satz von Warnungen zu konfigurieren, die keine Fehler sein sollen, wenn Sie alle Warnungen als Fehler festgelegt haben.
DisabledWarnings
Mit der Option DisabledWarnings können Sie unterdrücken, dass der Compiler mindestens eine Warnung anzeigt. Trennen Sie mehrere Warnnummern durch ein Komma.
<DisabledWarnings>number1, number2</DisabledWarnings>
number1-, number2-Warnnummer(n), die der Compiler unterdrücken soll. Sie geben den numerischen Teil des Warnungsbezeichners an. Wenn Sie z. B. CS0028 unterdrücken möchten, könnten Sie <DisabledWarnings>28</DisabledWarnings> angeben. Der Compiler ignoriert automatisch die Warnnummern, die an DisabledWarnings übergeben werden und in einer früheren Version gültig waren, jedoch entfernt worden sind. CS0679 war z. B. im Compiler in Visual Studio .NET 2002 gültig, wurde aber später entfernt.
Die folgenden Warnungen können nicht durch die Option "DisabledWarnings " unterdrückt werden:
- Compilerwarnung (Stufe 1) CS2002
- Compilerwarnung (Stufe 1) CS2023
- Compilerwarnung (Stufe 1) CS2029
CodeAnalysisRuleSet
Gibt eine Regelsatzdatei an, die bestimmte Diagnosefunktionen deaktiviert.
<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>
Dabei stellt MyConfiguration.ruleset den Pfad zur Regelsatzdatei dar. Weitere Informationen zur Verwendung von Regelsätzen finden Sie im Artikel in der Visual Studio-Dokumentation zu Regelsätzen.
ErrorLog
Angeben einer Datei für das Protokollieren der gesamten Compiler- und Analysetooldiagnose.
<ErrorLog>compiler-diagnostics.sarif</ErrorLog>
Die Option ErrorLog bewirkt, dass der Compiler ein SARIF-Protokoll (Static Analysis Results Interchange Format) ausgibt. SARIF-Protokolle werden in der Regel von Tools gelesen, die die Ergebnisse des Compilers und der Analysetooldiagnose analysieren.
Sie können das SARIF-Format mithilfe des version Arguments für das ErrorLog Element angeben:
<ErrorLog>logVersion21.json,version=2.1</ErrorLog>
Das Trennzeichen kann entweder ein Komma () oder ein Semikolon (,;) sein. Gültige Werte sind für version: "1", "2" und "2.1". Der Standardwert ist "1". "2" und "2.1" bedeuten beide SARIF Version 2.1.0.
ReportAnalyzer
Berichten zusätzlicher Analysetoolinformationen, z.B. der Zeitpunkt der Ausführung.
<ReportAnalyzer>true</ReportAnalyzer>
Die Option ReportAnalyzer veranlasst den Compiler, zusätzliche MSBuild-Protokollinformationen auszugeben, die die Leistungsmerkmale der Analysetools im Build detailliert darstellen. Sie wird in der Regel von Autoren von Analysetools im Rahmen der Überprüfung der Analysetools verwendet.
Wichtig
Die zusätzlichen Protokollinformationen, die von diesem Flag generiert werden, werden nur generiert, wenn die -verbosity:detailed Befehlszeilenoption verwendet wird. Weitere Informationen finden Sie im Artikel "Swtiches" in der MSBuild Dokumentation.