Compilerwarnungen unterdrücken
Mit Visual Studio können Sie angeben, welche Warnungen Unterdrückt werden sollen, indem Sie die Warnungscodes im Project Designer (Projekteigenschaftenseiten) angeben. Sie können Warnungen auch unterdrücken, indem Sie bestimmte Eigenschaften direkt in der Projektdatei, über die Befehlszeile oder im Code festlegen, wenn Sie eine Warnung nur an einem Ort unterdrücken möchten.
Einige Compiler und Buildtools verfügen auch über Optionen zum Angeben der Warnstufe. Auf diese Weise können Sie Warnungskategorien mit einer Einstellung steuern. Informationen zu diesen Optionen finden Sie in der Dokumentation für die spezifische Sprache und den Compiler, die Sie verwenden:
Wenn Sie eine präzisere und relevantere Ausgabe in Ihrem Buildprotokoll sehen möchten, sollten Sie die Ausführlichkeit des Buildprotokolls ändern. Die verfügbaren Einstellungen sind Normal-, Detaillierteoder Diagnose-. Weitere Informationen zur Ausführlichkeit finden Sie unter Anzeigen, Speichern und Konfigurieren von Buildprotokolldateien.
Vorsicht
Beachten Sie, dass Warnungen als Hinweis auf ein potenzielles Problem mit Ihrem Code dienen sollen, damit Sie die Risiken beim Deaktivieren einer bestimmten Warnung verstehen sollten. Visual Studio-Einstellungen deaktivieren Warnungen auf Projektebene. Möglicherweise möchten Sie einen gezielteren Ansatz zum Deaktivieren von Warnungen verwenden, als Visual Studio bereitstellt. 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 anderer Stelle im selben Projekt auftreten.
Unterdrücken bestimmter Warnungen für Visual C# oder F#
Verwenden Sie die Build-Eigenschaften, um bestimmte Warnungen für ein ganzes C#- oder F#-Projekt zu unterdrücken. Wenn Sie eine Warnung nur in einem bestimmten Teil des Codes in C# unterdrücken möchten, verwenden Sie #pragma Warnung. Verwenden Sie für F# #nowarn Präprozessordirektive, um eine Warnung für eine gesamte Quelldatei zu deaktivieren.
Wählen Sie im Projektmappen-Explorerdas Projekt aus, in dem Sie Warnungen unterdrücken möchten.
Klicken Sie mit der rechten Maustaste auf den Projektknoten, und wählen Sie im Kontextmenü Eigenschaften aus. Oder wählen Sie den Projektknoten aus und drücken Sie Alt+Enter.
Wählen Sie Erstellen aus, und wechseln Sie zum Unterabschnitt Fehler und Warnungen.
Geben Sie im Feld Warnungen unterdrücken oder im Feld Bestimmte Warnungen unterdrücken die Fehlercodes der Warnungen an, die Sie unterdrücken möchten, getrennt durch Semikolons. Eine Liste und Beschreibung von Warncodes finden Sie unter C#-Compilernachrichten.
Erstellen Sie die Lösung neu.
Wählen Sie im Projektmappen-Explorerdas Projekt aus, in dem Sie Warnungen unterdrücken möchten.
Klicken Sie mit der rechten Maustaste auf den Projektknoten, und wählen Sie im Kontextmenü Eigenschaften aus. Alternativ können Sie den Projektknoten auswählen und ALT+EINGABETASTE drücken.
Wählen Sie die Build-Seite oder den Abschnitt aus, und öffnen Sie, wenn Sie in der aktuellen Benutzeroberfläche sind, den Unterabschnitt "Fehler und Warnungen".
Geben Sie im Feld Warnungen unterdrücken oder Bestimmte Warnungen unterdrücken die Fehlercodes der Warnungen an, die unterdrückt werden sollen (durch Semikolons getrennt). Eine Liste und Beschreibung von Warncodes finden Sie unter C#-Compilernachrichten.
Erstellen Sie die Lösung neu.
Anmerkung
Einige Warnungen können nicht unterdrückt werden. Eine Liste dieser Optionen finden Sie unter NoWarn Compileroption.
Unterdrücken bestimmter Warnungen für C++
Sie können Warnungen in einem C++-Projekt mithilfe der Projekteigenschaften unterdrücken; Sie verwenden die Konfigurationseigenschaften Eigenschaftenseite, um bestimmte Warnungen für ein gesamtes C++-Projekt zu unterdrücken. Sie können Warnungen auch in bestimmten Dateien mithilfe von #pragma warning
unterdrücken. Die Steuerung auf Projektebene wird in diesem Artikel behandelt. Doch wenn Sie beabsichtigen, eine Warnung in einer bestimmten Datei oder nur für einige Zeilen Code zu deaktivieren, aber dennoch andere Vorkommen derselben Warnung sehen möchten, sollten Sie die Verwendung von #pragma warning
in Betracht ziehen. Weitere Informationen finden Sie unter #pragma-Warnung.
Wählen Sie im Projektmappen-Explorerdie Projekt- oder Quelldatei aus, in der Sie Warnungen unterdrücken möchten.
Wählen Sie in der Menüleiste Ansicht>Eigenschaftenseiten aus.
Wählen Sie die Kategorie Konfigurationseigenschaften, wählen Sie die Kategorie C/C++, und wählen Sie dann die Seite Erweitert aus.
Führen Sie einen der folgenden Schritte aus:
Geben Sie im Feld "Bestimmte Warnungen deaktivieren" die Fehlercodes der Warnungen an, die Sie unterdrücken möchten, getrennt durch ein Semikolon.
Wählen Sie im Feld "Bestimmte Warnungen deaktivieren" " bearbeiten" aus, um weitere Optionen anzuzeigen.
Wählen Sie die Schaltfläche OK aus, und erstellen Sie dann die Lösung neu.
Wenn die Warnung von einem anderen Tool stammt, lesen Sie die Dokumentation für das jeweilige Tool, um herauszufinden, wie Sie Warnungen für dieses Tool unterdrücken können. Beispielsweise enthält der C++-Linker einige Warnungen, die Sie mithilfe der Option /IGNORE
Linker deaktivieren können. Siehe /IGNORE (Bestimmte Warnungen ignorieren) und um diese Option festzulegen, siehe /link (Optionen an den Linker übergeben).
Unterdrücken von Warnungen für Visual Basic
Sie können bestimmte Compilerwarnungen für Visual Basic ausblenden, indem Sie die .vbproj
Datei für das Projekt bearbeiten. Um Warnungen nach Kategorie zu unterdrücken, können Sie Eigenschaftenseite erstellen verwenden. Wenn Sie eine Warnung in einem bestimmten Teil einer Codedatei deaktivieren möchten, verwenden Sie #Disable- und #Enable-Anweisungen. Weitere Informationen finden Sie unter Konfigurieren von Warnungen in Visual Basic.
So unterdrücken Sie bestimmte Warnungen für ein gesamtes Visual Basic-Projekt
In diesem Beispiel wird gezeigt, wie Sie die .vbproj
Datei bearbeiten, um bestimmte Compilerwarnungen zu unterdrücken.
Wählen Sie im Projektmappen-Explorerdas Projekt aus, in dem Sie Warnungen unterdrücken möchten.
Wählen Sie in der Menüleiste Projekt>Projekt entladen aus.
Öffnen Sie im Projektmappen-Explorer per Rechtsklick das Kontextmenü für das Projekt, und wählen Sie dann <Projektname>.vbproj bearbeiten aus.
Die XML-Projektdatei wird im Code-Editor geöffnet.
Suchen Sie das
<NoWarn>
-Element für die Buildkonfiguration, mit der Sie erstellen, und fügen Sie eine oder mehrere Warnungsnummern als Wert des<NoWarn>
-Elements hinzu. Wenn Sie mehrere Warnnummern angeben, trennen Sie sie durch ein Komma.Das folgende Beispiel zeigt das
<NoWarn>
-Element für die Debug- Buildkonfiguration auf einer x86-Plattform, wobei zwei Compilerwarnungen unterdrückt werden:<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PlatformTarget>x86</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineDebug>true</DefineDebug> <DefineTrace>true</DefineTrace> <ErrorReport>prompt</ErrorReport> <NoWarn>40059,42024</NoWarn> <WarningLevel>1</WarningLevel> </PropertyGroup>
Anmerkung
.NET Core-Projekte enthalten standardmäßig keine Gruppen der Build-Konfigurationseigenschaften. Um Warnungen in einem .NET Core-Projekt zu unterdrücken, fügen Sie der Datei manuell den Abschnitt für die Buildkonfiguration hinzu. Zum Beispiel:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> <RootNamespace>VBDotNetCore_1</RootNamespace> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <NoWarn>42016,41999,42017</NoWarn> </PropertyGroup> </Project>
Speichern Sie die Änderungen in der
.vbproj
Datei.Wählen Sie in der Menüleiste Projekt>Projekt erneut laden aus.
Wählen Sie in der Menüleiste Erstellen>Projektmappe neu erstellen aus.
Das Ausgabefenster zeigt die Warnungen, die Sie angegeben haben, nicht mehr an.
Weitere Informationen finden Sie in der /nowarn Compileroption für den Visual Basic-Befehlszeilencompiler.
Sie können Warnungen für einzelne Warnungen oder nach Kategorie unterdrücken. Die Oberfläche unterscheidet sich je nachdem, ob Sie mit einem .NET Framework-Projekt oder einem .NET Core-Projekt (oder .NET 5 und höher) arbeiten.
Wenn Sie eine Warnung in einem bestimmten Teil einer Codedatei deaktivieren möchten, verwenden Sie #Disable- und #Enable-Anweisungen. Weitere Informationen finden Sie unter Konfigurieren von Warnungen in Visual Basic.
.NET 5- oder höher-Projekte
Sie können die Projektdatei bearbeiten, um bestimmte Compilerwarnungen durch die Diagnosecodes zu unterdrücken, oder Sie können Warnungen nach Kategorie mithilfe des Project-Designers unterdrücken. Um den Projektdesigner zu öffnen, wählen Sie den Projektknoten aus, klicken Sie mit der rechten Maustaste, und wählen Sie Eigenschaftenaus, oder drücken Sie Alt+Eingabe.
Wählen Sie im Abschnitt Kompilieren Warnungen aus. Unter Warnungsschweregrad können Sie Schweregrade der Warnungen individuell festlegen. Die Kategorien werden angezeigt, und Sie haben die Möglichkeit, jede Kategorie auf Keine festzulegen, um die Warnungskategorie zu deaktivieren, oder sie auf Warnung oder Fehler festzulegen, um sie entweder als Warnung oder Fehler zu aktivieren.
.NET Framework-Projekte
Sie können bestimmte Compilerwarnungen für Visual Basic ausblenden, indem Sie die .vbproj
Datei für das Projekt bearbeiten. Um Warnungen der Kategorie zu unterdrücken, können Sie die Kompilierungseinstellungen-Seite verwenden.
So unterdrücken Sie bestimmte Warnungen für ein gesamtes Visual Basic-Projekt
In diesem Beispiel wird gezeigt, wie Sie die .vbproj
Datei bearbeiten, um bestimmte Compilerwarnungen zu unterdrücken.
Wählen Sie im Projektmappen-Explorerdas Projekt aus, in dem Sie Warnungen unterdrücken möchten.
(.NET) Doppelklicken Sie auf den Projektknoten, um die Projektdatei zu öffnen.
(.NET Framework) Wählen Sie in der Menüleiste Projekt>Projekt entladen aus. Öffnen Sie dann im Projektmappen-Explorer per Rechtsklick das Kontextmenü für das Projekt, und wählen Sie dann Bearbeiten<Projektname>.vbproj bearbeiten aus.
Die MSBuild-Projektdatei wird im Code-Editor geöffnet. Dies ist eine XML-Datei.
Suchen Sie das
<NoWarn>
-Element für die Buildkonfiguration, mit der Sie erstellen, und fügen Sie eine oder mehrere Warnungsnummern als Wert des<NoWarn>
-Elements hinzu. Wenn Sie mehrere Warnnummern angeben, trennen Sie sie durch ein Komma.Das folgende Beispiel zeigt das
<NoWarn>
-Element für die Debug- Buildkonfiguration auf einer x86-Plattform, wobei zwei Compilerwarnungen unterdrückt werden:<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PlatformTarget>x86</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineDebug>true</DefineDebug> <DefineTrace>true</DefineTrace> <ErrorReport>prompt</ErrorReport> <NoWarn>40059,42024</NoWarn> <WarningLevel>1</WarningLevel> </PropertyGroup>
Anmerkung
.NET Core-Projekte und Projekte mit .NET 5 oder höher enthalten standardmäßig keine Eigenschaftengruppen für die Buildkonfiguration. Um Warnungen in einem .NET Core-Projekt zu unterdrücken, fügen Sie der Datei manuell den Abschnitt für die Buildkonfiguration hinzu. Zum Beispiel:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> <RootNamespace>VBDotNetCore_1</RootNamespace> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <NoWarn>42016,41999,42017</NoWarn> </PropertyGroup> </Project>
Speichern Sie die Änderungen in der
.vbproj
Datei.Wählen Sie in der Menüleiste Projekt>Projekt erneut laden aus.
Wählen Sie in der Menüleiste Erstellen>Projektmappe neu erstellen aus.
Im -Ausgabefenster werden die von Ihnen angegebenen Warnungen nicht mehr angezeigt.
Weitere Informationen finden Sie in der /nowarn Compileroption für den Visual Basic-Befehlszeilencompiler.
Unterdrücken einer Warnung durch Bearbeiten der Projektdatei
Wenn Sie den Visual Studio-Eigenschaften-Designer verwenden, um Warnungen zu unterdrücken, führt dies zu einer Änderung der Projektdatei. Manchmal kann es praktischer sein, die Projektdatei manuell zu bearbeiten, um die Aufgabe zum Deaktivieren einer Warnung auszuführen. Die Projektdatei wird von MSBuild, dem Buildmodul von Microsoft, verarbeitet. Siehe MSBuild.
Außerdem können in Visual Studio 2019, Version 16.7 und früher, einige Warnungen von anderen Tools als dem Compiler nicht auf andere Weise unterdrückt werden.
Um die Projektdatei im Visual Studio-Editor zu öffnen, klicken Sie mit der rechten Maustaste auf den Projektknoten, und wählen Sie Projektdatei bearbeitenaus. Für einige Projekttypen müssen Sie das Projekt entladen, bevor Sie die Projektdatei bearbeiten können. Wenn Sie das Projekt entladen müssen, klicken Sie mit der rechten Maustaste auf den Projektknoten, und wählen Sie Projekt entladenaus.
Verwenden Sie in einem neuen
PropertyGroup
-Abschnitt dieNoWarn
-Eigenschaft. Listet die Fehler auf, die Sie unterdrücken möchten, getrennt durch Kommas oder Semikolons. Bei Compilerwarnungen können Sie den Sprachcode weglassen und nur die Zahl eingeben, aus Gründen der Klarheit wird jedoch empfohlen, den vollständigen Code zu verwenden. Geben Sie für Warnungen von anderen Tools im Build den vollständigen Code an, einschließlich des Präfixes (z. B.MSB
für Warnungen, die von MSBuild selbst ausgegeben wurden).Der folgende Code fügt warnungen CS0028 und CS0618 zur Liste der unterdrückten Warnungen hinzu:
<PropertyGroup> // Other properties <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn> </PropertyGroup>
Wenn Sie auf den vorherigen Wert von
$(NoWarn)
verweisen, wie im vorherigen Beispiel gezeigt, werden diese Zahlen zu einem zuvor festgelegten Wert fürNoWarn
hinzugefügt, anstatt ihn zu überschreiben.
Siehe NoWarn.
Unterdrücken einer Warnung aus der Build-Befehlszeile
Wenn Sie ein Projekt über die Befehlszeile erstellen, können Sie Warnungen auch mithilfe von -warnAsMessage
in der Befehlszeile MSBuild unterdrücken. Verwenden Sie Anführungszeichen für Listen mit mehreren Warncodes.
MSBuild.exe -warnAsMessage="CS0028;CS0618" MyProject.csproj
Informationen finden Sie in der MSBuild-Befehlszeilenreferenz.
Unterdrücken von Warnungen für alle Projekte und Lösungen in einer Verzeichnisstruktur
Sie können Warnungen für viele Projekte gleichzeitig unterdrücken, wenn sie sich alle in einem gemeinsamen Verzeichnis im Dateisystem befinden, indem Sie die MSBuild-Datei Directory.Build.propsverwenden. Weitere Informationen finden Sie unter Anpassen von Builds nach Verzeichnis. Wenn Sie z. B. die folgende Directory.Build.props Datei im Stammverzeichnis eines Ordners mit vielen Lösungen und Projekten platzieren, können Sie eine bestimmte Liste von Warnungen für alle Projekte in diesem Ordner unterdrücken und rekursiv auf Ordner innerhalb davon anwenden.
<Project>
<PropertyGroup>
<NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
</PropertyGroup>
</Project>
Unterdrücken von Toolwarnungen
Wie Sie Warnungen von anderen Tools als dem Compiler unterdrücken, z. B. MSBuild, hängt davon ab, über welchen Projekttyp Sie verfügen und welche Version von MSBuild Sie verwenden.
Mit MSBuild 16.8 und höher können Sie in Projekten, die ein SDK oder die Standardimporte verwenden, Toolwarnungen mit den gleichen zuvor beschriebenen Methoden unterdrücken. Sie müssen den vollständigen Fehlercode (einschließlich des Präfixes wie MSB
für MSBuild) angeben, nicht nur eine Zahl wie bei einer Compilerwarnung. Außerdem wird die Nachricht nicht eliminiert; sie wird weiterhin als Informationsmeldung angezeigt, wurde jedoch von einer Warnung herabgestuft.
Mit MSBuild 16.7 und früheren Versionen und in jedem Projekt, das kein SDK oder die Standardimporte verwendet, werden diese Warnungen nicht mithilfe von NoWarn
unterdrückt. In solchen Fällen lautet die Eigenschaft, mit der Sie Toolwarnungen unterdrücken können, MSBuildWarningsAsMessages
. Sie können Buildwarnungen unterdrücken, indem Sie die Projektdatei bearbeiten oder die Option MSBuildWarningsAsMessages
in der Befehlszeile MSBuild angeben. Wenn Sie MSBuildWarningsAsMessages
verwenden, verwenden Sie den vollständigen MSBuild-Fehlercode, einschließlich des Präfixes MSB
.
<PropertyGroup>
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3270</MSBuildWarningsAsMessages>
</PropertyGroup>
Beachten Sie, dass einige MSBuild-Warnungen nicht unterdrückt werden können, indem sie MSBuildWarningsAsMessages
festlegen. Um sie zu deaktivieren, verwenden Sie die Befehlszeilenoption warnAsMessage
.
Außerdem verfügen einige Warnungen über bestimmte Eigenschaften, die Sie zum Deaktivieren der Warnung festlegen können. Beispielsweise wird MSB3253
durch Festlegen der Eigenschaft deaktiviert:
<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
None
</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
Verwenden Sie nach Möglichkeit die explizitere Eigenschaft, da ein Fehlercode selbst nicht so leicht verstanden wird. Die Fehlerverweisseite für den Code enthält in der Regel die Eigenschaft, die zum Deaktivieren verwendet wird.
Unterdrücken von Warnungen für NuGet-Pakete
In einigen Fällen sollten Sie NuGet-Compilerwarnungen für ein einzelnes NuGet-Paket anstelle eines gesamten Projekts unterdrücken. Die Warnung dient einem Zweck, sodass Sie sie nicht auf Projektebene unterdrücken möchten. Eine der NuGet-Warnungen teilt Ihnen beispielsweise mit, dass das Paket möglicherweise nicht vollständig mit Ihrem Projekt kompatibel ist. Wenn Sie es auf Projektebene unterdrücken und später ein zusätzliches NuGet-Paket hinzufügen, würden Sie nie wissen, ob die Kompatibilitätswarnung erzeugt wurde.
So unterdrücken Sie eine bestimmte Warnung für ein einzelnes NuGet-Paket
Wählen Sie im Projektmappen-Explorerdas NuGet-Paket aus, für das Sie Compilerwarnungen unterdrücken möchten.
Wählen Sie im Kontextmenü (Rechtsklick) Eigenschaften aus.
Geben Sie in den Paketeigenschaften im Feld Warnungen unterdrücken die Warnungsnummer ein, die Sie für dieses Paket unterdrücken möchten. Wenn Sie mehrere Warnungen unterdrücken möchten, verwenden Sie ein Komma, um die Warnungsnummern zu trennen.
Die Warnung verschwindet aus dem Projektmappen-Explorer und der Fehlerliste. In der Projektdatei ist die NoWarn-Eigenschaft festgelegt.
<PackageReference Include="NuGet.Build.Tasks.Pack" Version="6.2.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <NoWarn>NU5104</NoWarn> </PackageReference>
Unterdrücken von Codeanalysewarnungen
Diagnosemeldungen mit Codes, die mit CA
beginnen, sind Codeanalyseverletzungen und Warnungen, die sich von den in diesem Artikel erläuterten Compilerwarnungen unterscheiden. Sie können Codeanalysewarnungen auf verschiedene Weise unterdrücken, einschließlich der Verwendung von standortspezifischem Markup sowie projektweit oder global, indem Sie Regelkonfigurationsdateien verwenden. Weitere Informationen finden Sie unter Unterdrücken von Code Analysis-Warnungen und Unterdrücken von Code Analysis-Verletzungen.
Verwandte Inhalte
- Exemplarische Vorgehensweise: Erstellen einer Anwendung
- Vorgehensweise: Anzeigen, Speichern und Konfigurieren von Buildprotokolldateien
- Kompilieren und Erstellen
- Code Analysis
- C#-Compileroptionen zum Melden von Fehlern und Warnungen
- Konfigurieren von Warnungen in Visual Basic
- C++-Compilerfehler und -Warnungen