Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit den folgenden Optionen wird gesteuert, wie der Compiler Fehler und Warnungen meldet.
MSBuild-Syntax | csc.exe-Syntax | Beschreibung |
---|---|---|
WarningLevel |
-warn |
Festlegen der Warnstufe. Weitere Informationen. |
AnalysisLevel |
/ | Legen Sie optionale Warnstufe fest. Weitere Informationen. |
TreatWarningsAsErrors |
-warnaserror |
Behandeln Sie alle Warnungen als Fehler. Weitere Informationen. |
WarningsAsErrors |
-warnaserror+ |
Behandeln Sie eine oder mehrere Warnungen als Fehler. Weitere Informationen. |
WarningsNotAsErrors |
-warnaserror- |
Behandeln Sie eine oder mehrere Warnungen nicht als Fehler. Weitere Informationen. |
NoWarn |
-nowarn |
Legen Sie eine Liste deaktivierter Warnungen fest. Weitere Informationen. |
CodeAnalysisRuleSet |
-ruleset |
Geben Sie eine Regelsatzdatei an, die bestimmte Diagnosen deaktiviert. Weitere Informationen. |
ErrorLog |
-errorlog |
Angeben einer Datei für das Protokollieren der gesamten Compiler- und Analysetooldiagnose. Weitere Informationen. |
ReportAnalyzer |
-reportanalyzer |
Melden Sie zusätzliche Analyseinformationen, z. B. die Ausführungszeit. Weitere Informationen. |
Hinweis
Weitere Informationen zum Konfigurieren dieser Optionen für Ihr Projekt finden Sie in den Compileroptionen. Weitere Informationen zu den verfügbaren Switches finden Sie im Artikel zu MSBuild-Befehlszeilenoptionen in der Visual Studio-Dokumentation.
Warnstufe
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 Warnungen in Warnungswellen zu aktivieren.
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.
Analyseebene
Die Option AnalysisLevel gibt höhere Warnwellen und Analyseanalysen an, die in .NET 7- und höher-Projekten aktiviert werden sollen. Warnstufen sind zusätzliche Prüfungen, die Ihren Code verbessern oder sicherstellen, dass er mit bevorstehenden Versionen kompatibel ist. Analysetools bieten lint-ähnliche Funktionen, um Ihren Code zu verbessern.
Beginnend mit dem .NET 7 SDK werden AnalysisLevel und WarningLevel basierend auf diesen Regeln festgelegt:
- Das Standard-AnalysisLevel entspricht dem Zielplattform-Moniker (TFM) aus der Projektdatei.
- Der Standard-WarningLevel entspricht dem Wert für AnalysisLevel.
- Die Standardwarnungsstufe ist 4 für .NET Framework-Projekte.
Vor dem .NET 7 SDK überschrieben der AnalysisLevel den WarningLevel. Das .NET 7 SDK überschreibt den WarningLevel.
<AnalysisLevel>preview</AnalysisLevel>
Analyseebene | Bedeutung |
---|---|
5 | Zeigt alle optionalen Warnungen in Warnungswelle 5 an. |
6 | Zeigt alle optionalen Warnungen in Warnungswelle 6 an. |
7 | Zeigt alle optionalen Warnungen in Warnungswelle 7 an. |
Neueste (Standardeinstellung) | Zeigt alle Informationswarnungen bis einschließlich des aktuellen Release an. |
Vorschau | Zeigt alle Informationswarnungen bis einschließlich des aktuellen Vorschaurelease 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. Wählen Sie NoWarn aus, um bestimmte Warnungen zu deaktivieren.
WarnungenAlsFehlerBehandeln
Mit der Option TreatWarningsAsErrors werden alle Warnungen als Fehler behandelt. Sie können WarningsAsErrors auch verwenden, um nur einige Warnungen als Fehler festzulegen. Wenn Sie TreatWarningsAsErrors aktivieren, können Sie mithilfe von WarningsNotAsErrors Warnungen auflisten, die nicht als Fehler behandelt werden sollen.
<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. Optional können Sie, wenn nur einige bestimmte Warnungen als Fehler behandelt werden sollen, eine durch Trennzeichen getrennte Liste mit Warnnummern 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. Wählen Sie NoWarn aus, um bestimmte Warnungen zu deaktivieren.
Wichtig
Es gibt zwei geringfügige Unterschiede zwischen der Verwendung des Elements <TreatWarningsAsErrors>
in Ihrer CSPROJ-Datei und der Verwendung des MSBuild-Befehlszeilenschalters warnaserror
.
TreatWarningsAsErrors wirkt sich nur auf den C#-Compiler, nicht auf andere MSBuild-Aufgaben in Ihrer CSPROJ-Datei aus. Der Befehlszeilenschalter warnaserror
wirkt sich auf alle Aufgaben aus. Zweitens erzeugt der Compiler keine Ausgabe von Warnungen, wenn TreatWarningsAsErrors verwendet wird. Der Compiler erzeugt eine Ausgabe, wenn der Befehlszeilenschalter warnaserror
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 Warnungsnummer verwenden. Weitere Elemente, die sich auf Warnungen auswirken, finden Sie unter Allgemeine MSBuild-Eigenschaften. Zusätzlich zur Liste der Warnungs-IDs können Sie außerdem die Zeichenfolge nullable
angeben, die alle Warnungen im Zusammenhang mit der NULL-Zulässigkeit als Fehler behandelt.
Aktivieren Sie die Warnungen 0219 und 0168 sowie alle Nullwerte zulassenden Warnungen als Fehler:
<WarningsAsErrors>0219;CS0168;nullable</WarningsAsErrors>
Deaktivieren derselben Warnungen als Fehler:
<WarningsNotAsErrors>0219;CS0168;nullable</WarningsNotAsErrors>
Sie verwenden WarningsAsErrors, um einen Satz von Warnungen als Fehler zu konfigurieren. Verwenden Sie WarningsNotAsErrors , um eine Reihe von Warnungen zu konfigurieren, die keine Fehler sein sollten, wenn Sie alle Warnungen als Fehler festlegen.
NoWarn
Mit der Option NoWarn können Sie verhindern, dass der Compiler Warnungen anzeigt. warningnumber1
und warningnumber2
sind Warnungsnummern, die der Compiler unterdrücken soll. Trennen Sie mehrere Warnnummern durch ein Komma. Sie können nullable
angeben, um alle Warnungen im Zusammenhang mit der NULL-Zulässigkeit zu deaktivieren.
<NoWarn>warningnumber1,warningnumber2</NoWarn>
Sie müssen lediglich den numerischen Teil des Warnungsbezeichners angeben. Wenn Sie z. B. CS0028 unterdrücken möchten, könnten Sie <NoWarn>28</NoWarn>
angeben. Der Compiler ignoriert warnungsnummern, die an NoWarn übergeben wurden, die in früheren Versionen gültig waren, werden jedoch nicht vom aktuellen Compiler generiert.
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 NoWarn unterdrückt werden:
- Compilerwarnung (Stufe 1) CS2002
- Compilerwarnung (Stufe 1) CS2023
- Compilerwarnung (Stufe 1) CS2029
Warnungen sollen ein Hinweis auf ein potenzielles Problem mit Ihrem Code sein, sodass Sie die Risiken beim Deaktivieren einer bestimmten Warnung verstehen sollten. Verwenden Sie NoWarn nur, wenn Sie sicher sind, dass eine Warnung ein False Positive ist und kein Laufzeitfehler sein kann.
Möglicherweise möchten Sie einen gezielteren Ansatz zum Deaktivieren von Warnungen verwenden:
- Die meisten Compiler bieten Möglichkeiten, Warnungen nur für bestimmte Codezeilen zu deaktivieren, sodass Sie die Warnungen weiterhin überprüfen können, wenn sie an anderen Stellen im selben Projekt auftreten. Wenn Sie eine Warnung nur in einem bestimmten Teil des Codes in C# unterdrücken möchten, verwenden Sie #pragma-Warnungen.
- Wenn Sie eine präzisere und zielgerichtetere Ausgabe in Ihrem Buildprotokoll sehen möchten, sollten Sie die Ausführlichkeit des Buildprotokolls ändern. Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen, Speichern und Konfigurieren von Buildprotokolldateien.
Wenn Sie Warnungsnummern zu einem zuvor festgelegten Wert für NoWarn hinzufügen möchten, ohne ihn zu überschreiben, verweisen Sie wie im folgenden Beispiel gezeigt auf $(NoWarn)
:
<NoWarn>$(NoWarn);newwarningnumber3;newwarningnumber4</NoWarn>
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.
Fehlerprotokoll
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. Tools, die Compiler- und Analyseergebnisse analysieren, lesen SARIF-Protokolle.
Sie können das SARIF-Format mithilfe des Arguments version
für das Element ErrorLog
angeben:
<ErrorLog>logVersion21.json,version=2.1</ErrorLog>
Das Trennzeichen kann entweder ein Komma (,
) oder Semikolon (;
) sein. Gültige Werte für „version“ sind : „1“, „2“ und „2.1“. Der Standardwert ist „1“. „2“ und „2.1“ bedeuten SARIF-Version 2.1.0.
ReportAnalyzer
Melden Sie zusätzliche Analyseinformationen, z. B. die Ausführungszeit.
<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 Befehlszeilenoption -verbosity:detailed
verwendet wird. Weitere Informationen finden Sie im Artikel " Switches" in der MSBuild-Dokumentation.