Ignorera kompilatorvarningar
Med Visual Studio kan du ange vilka varningar du vill ignorera genom att ange varningskoderna i Projektdesignern (projektegenskapssidor). Du kan också ignorera varningar genom att ange vissa egenskaper direkt i projektfilen, via kommandoraden eller i kod när du endast vill ignorera en varning på en plats.
Vissa kompilatorer och byggverktyg har också alternativ för att ange varningsnivån. På så sätt kan du styra varningskategorier med en inställning. För dessa alternativ, se dokumentationen för det specifika språket och kompilatorn som du använder:
Om ditt mål är att se mer koncisa och fokuserade utdata i byggloggen kanske du vill ändra detaljrikedomen i byggloggen. De tillgängliga inställningarna är Normal, Detailedeller Diagnostic. Mer information om utförlighet finns i Så här: Visa, spara och konfigurera byggloggfiler.
Försiktighet
Observera att varningar är avsedda att vara en indikation på ett potentiellt problem med din kod, så du bör förstå riskerna med att inaktivera en viss varning. Visual Studio-inställningar inaktiverar varningar på projektnivå. Du kanske vill använda en mer riktad metod för att inaktivera varningar än vad Visual Studio tillhandahåller. De flesta kompilatorer tillhandahåller sätt att inaktivera varningar bara för vissa kodrader, så att du fortfarande kan granska varningarna om de inträffar någon annanstans i samma projekt.
Ignorera specifika varningar för Visual C# eller F#
Använd egenskaperna Build för att ignorera specifika varningar för ett helt C# och F#-projekt. Om du bara vill ignorera en varning i en viss del av koden i C# använder du #pragma varning. För F# använder du #nowarn förprocessordirektiv för att inaktivera en varning för en hel källfil.
I Solution Explorerväljer du det projekt där du vill ignorera varningar.
Högerklicka på projektnoden och välj Egenskaper på snabbmenyn. Eller välj projektnoden och tryck på Alt+Retur.
Välj Skapaoch gå till underavsnittet Fel och varningar.
I rutan Utelämna varningar eller Ignorera specifika varningar anger du felkoderna för de varningar som du vill ignorera, avgränsade med semikolon. En lista och beskrivningar av varningskoder finns i C#-kompilatormeddelanden.
Återskapa lösningen.
I Solution Explorerväljer du det projekt där du vill ignorera varningar.
Högerklicka på projektnoden och välj Egenskaper på snabbmenyn. Eller välj projektnoden och tryck på Alt+Retur.
Välj sidan eller avsnittet Build och om du är i det aktuella användargränssnittet öppnar du Fel och varningar underavsnittet.
I rutan Utelämna varningar eller Ignorera specifika varningar anger du felkoderna för de varningar som du vill ignorera, avgränsade med semikolon. En lista och beskrivningar av varningskoder finns i C#-kompilatormeddelanden.
Återskapa lösningen.
Notera
Vissa varningar kan inte ignoreras. En lista över dessa finns i NoWarn-kompilatoralternativet.
Ignorera specifika varningar för C++
Du kan ignorera varningar i ett C++-projekt med hjälp av projektegenskaperna. du använder egenskapssidan Konfigurationsegenskaper för att ignorera specifika varningar för ett helt C++-projekt. Du kan också ignorera varningar i specifika filer med hjälp av #pragma warning
. Den här artikeln beskriver kontrollen på projektnivå, men om avsikten är att inaktivera en varning i en viss fil eller bara några rader kod, men du vill fortsätta att se andra förekomster av samma varning, bör du överväga att använda #pragma warning
. Se #pragma-varning.
I Solution Explorerväljer du projektet eller källfilen där du vill ignorera varningar.
På menyraden väljer du Visa>Egenskapssidor.
Välj kategorin Konfigurationsegenskaper, välj kategorin C/C++ och välj sedan sidan Avancerat.
Utför något av följande steg:
I rutan Inaktivera specifika varningar anger du felkoderna för de varningar som du vill ignorera, avgränsade med ett semikolon.
I rutan Inaktivera specifika varningar väljer du Redigera om du vill visa fler alternativ.
Välj knappen OK och återskapa sedan lösningen.
Om varningen kommer från ett annat verktyg kan du läsa dokumentationen för det specifika verktyget för att ta reda på hur du kan förhindra varningar för verktyget. Till exempel har C++-länkaren några varningar som du kan inaktivera med hjälp av alternativet /IGNORE
-länkare. Se /IGNORE (Ignorera specifika varningar) och för att ange det här alternativet, se /link (Skicka alternativ till länken).
Ignorera varningar för Visual Basic
Du kan dölja specifika kompilatorvarningar för Visual Basic genom att redigera .vbproj
-filen för projektet. Om du vill undertrycka varningar i kategorinkan du använda kompileringsegenskapssidan . Om du vill inaktivera en varning i en viss del av en kodfil använder du #Disable- och #Enable-direktiv. Mer information finns i Konfigurera varningar i Visual Basic.
Så här utelämnar du specifika varningar för ett helt Visual Basic-projekt
Det här exemplet visar hur du redigerar .vbproj
-filen för att förhindra specifika kompilatorvarningar.
I Solution Explorerväljer du det projekt där du vill ignorera varningar.
På menyraden väljer du Project>Unload Project.
I Solution Explorer, öppna snabbmenyn genom att högerklicka eller använda en tangentbordsgenväg för projektet, och välj sedan Redigera <ProjectName>.vbproj.
XML-projektfilen öppnas i kodredigeraren.
Leta upp
<NoWarn>
-elementet för byggkonfigurationen som du skapar med och lägg till ett eller flera varningsnummer som värdet för<NoWarn>
-elementet. Om du anger flera varningsnummer separerar du dem med kommatecken.I följande exempel visas
<NoWarn>
-elementet för Felsöka build-konfiguration på en x86-plattform, med två kompilatorvarningar undertryckta:<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>
Not
.NET Core-projekt innehåller inte byggkonfigurationsegenskapsgrupper som standard. Om du vill förhindra varningar i ett .NET Core-projekt lägger du till avsnittet byggkonfiguration i filen manuellt. Till exempel:
<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>
Spara ändringarna i
.vbproj
-filen.På menyraden väljer du Project>Reload Project.
På menyraden väljer du Bygg>Bygg om lösning.
Fönstret Utdata visar inte längre de varningar som du har angett.
Mer information finns i /nowarn-kompilatoralternativet för Visual Basic-kommandoradskompilatorn.
Du kan ignorera varningar för enskilda varningar eller efter kategori. Upplevelsen varierar beroende på om du arbetar med ett .NET Framework-projekt eller ett .NET Core-projekt (eller .NET 5 och senare).
Om du vill inaktivera en varning i en viss del av en kodfil använder du #Disable- och #Enable-direktiv. Mer information finns i Konfigurera varningar i Visual Basic.
.NET 5- eller senare projekt
Du kan redigera projektfilen för att förhindra specifika kompilatorvarningar med hjälp av diagnostikkoderna, eller så kan du ignorera varningar efter kategori med hjälp av Projektdesignern. Om du vill öppna projektdesignern väljer du projektnoden, högerklickar och väljer Egenskapereller trycker på Alt+Retur.
I avsnittet Kompilera väljer du Varningar. Under Varnings allvarlighetsgradkan du välja Ange varnings allvarlighetsgrad individuellt. Kategorierna visas och du har möjlighet att ange att varje kategori ska Ingen för att inaktivera varningskategorin eller ställa in den på Varning eller Fel för att aktivera den antingen som en varning eller ett fel.
.NET Framework-projekt
Du kan dölja specifika kompilatorvarningar för Visual Basic genom att redigera .vbproj
-filen för projektet. Om du vill undertrycka varningar av kategori kan du använda egenskapssidan Kompilera.
Så här utelämnar du specifika varningar för ett helt Visual Basic-projekt
Det här exemplet visar hur du redigerar .vbproj
-filen för att förhindra specifika kompilatorvarningar.
I Solution Explorerväljer du det projekt där du vill ignorera varningar.
(.NET) Dubbelklicka på projektnoden för att öppna projektfilen.
(.NET Framework) På menyraden väljer du Project>Unload Project. I Solution Explorerhögerklickar du på projektet för att öppna snabbmenyn och väljer sedan Redigera <ProjectName>.vbproj.
MSBuild-projektfilen öppnas i kodredigeraren. Det här är en XML-fil.
Leta upp
<NoWarn>
-elementet för byggkonfigurationen som du skapar med och lägg till ett eller flera varningsnummer som värdet för<NoWarn>
-elementet. Om du anger flera varningsnummer separerar du dem med kommatecken.I följande exempel visas
<NoWarn>
-elementet för Felsöka build-konfiguration på en x86-plattform, med två kompilatorvarningar undertryckta:<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>
Note
.NET Core- och .NET 5- och senare projekt innehåller som standard inte egenskapsgrupper för byggkonfiguration. Om du vill förhindra varningar i ett .NET Core-projekt lägger du till avsnittet byggkonfiguration i filen manuellt. Till exempel:
<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>
Spara ändringarna i
.vbproj
-filen.På menyraden väljer du Project>Reload Project.
På menyraden väljer du Bygg>Återskapa lösning.
Fönstret Utdata visar inte längre de varningar som du har angett.
Mer information finns i /nowarn-kompilatoralternativet för Visual Basic-kommandoradskompilatorn.
Ignorera en varning genom att redigera projektfilen
Om du använder Visual Studio-egenskapsdesignern för att ignorera varningar resulterar det i en ändring av projektfilen. Ibland kan det vara enklare att redigera projektfilen för att utföra uppgiften att inaktivera en varning. Projektfilen bearbetas av MSBuild, Microsofts byggmotor. Se MSBuild.
I Visual Studio 2019 version 16.7 och tidigare kan vissa varningar från andra verktyg än kompilatorn inte heller ignoreras på något annat sätt.
Om du vill öppna projektfilen i Visual Studio-redigeraren högerklickar du på projektnoden och väljer Redigera projektfil. Vissa projekttyper kräver att du tar bort projektet innan du kan redigera projektfilen. Om du behöver ta bort projektet högerklickar du på projektnoden och väljer Ta bort projekt.
I ett nytt
PropertyGroup
-avsnitt, använd egenskapenNoWarn
. Visa en lista över de fel som du vill utelämna, avgränsade med kommatecken eller semikolon. För kompilatorvarningar kan du utelämna språkkoden och bara ange numret, men för tydlighetens skull rekommenderar vi att du använder den fullständiga koden. För varningar från andra verktyg i versionen anger du den fullständiga koden, inklusive prefixet (till exempelMSB
för varningar som utfärdats av SJÄLVA MSBuild).Följande kod lägger till varningar CS0028 och CS0618 i listan över undertryckta varningar:
<PropertyGroup> // Other properties <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn> </PropertyGroup>
Om du refererar till det tidigare värdet för
$(NoWarn)
som du ser i föregående exempel läggs dessa tal till i ett tidigare angivet värde förNoWarn
i stället för att skriva över det.
Se NoWarn.
Ignorera en varning från kommandoraden build
Om du skapar ett projekt från kommandoraden kan du också ignorera varningar med hjälp av -warnAsMessage
på kommandoraden MSBuild. Använd citattecken runt listor med flera varningskoder.
MSBuild.exe -warnAsMessage="CS0028;CS0618" MyProject.csproj
Se kommandoradsreferens för MSBuild.
Ignorera varningar för alla projekt och lösningar i en katalogstruktur
Du kan ignorera varningar för många projekt samtidigt om de alla finns under en gemensam katalog i filsystemet med hjälp av MSBuild-filen Directory.Build.props. Se Anpassa versioner efter katalog. Om du till exempel placerar följande Directory.Build.props filen i roten av en mapp med många lösningar och projekt, kan du utelämna en angiven lista med varningar för alla projekt i mappen och rekursivt till mappar i den.
<Project>
<PropertyGroup>
<NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
</PropertyGroup>
</Project>
Ignorera verktygsvarningar
Hur du undertrycker varningar från andra verktyg än kompilatorn, till exempel MSBuild, beror på vilken typ av projekt du har och vilken version av MSBuild du använder.
Med MSBuild 16.8 och senare kan du i projekt som använder ett SDK eller standardimporter utelämna verktygsvarningar med samma metoder som beskrevs tidigare. Du måste ange den fullständiga felkoden (inklusive prefixet, till exempel MSB
för MSBuild), inte bara ett tal som du kan med en kompilatorvarning. Dessutom elimineras inte meddelandet. Det visas fortfarande som ett informationsmeddelande, men det har degraderats från en varning.
Med MSBuild 16.7 och tidigare, och i alla projekt som inte använder en SDK eller standardimport, ignoreras inte dessa varningar med hjälp av NoWarn
. I sådana fall är den egenskap som du kan använda för att ignorera verktygsvarningar MSBuildWarningsAsMessages
. Du kan ignorera byggvarningar genom att redigera projektfilen eller ange alternativet MSBuildWarningsAsMessages
på kommandoraden MSBuild. När du använder MSBuildWarningsAsMessages
använder du den fullständiga MSBuild-felkoden, inklusive prefixet MSB
.
<PropertyGroup>
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3270</MSBuildWarningsAsMessages>
</PropertyGroup>
Observera att vissa MSBuild-varningar inte kan ignoreras genom att ange MSBuildWarningsAsMessages
. Om du vill inaktivera dem använder du kommandoradsalternativet warnAsMessage
.
Vissa varningar har också specifika egenskaper som du kan ange för att inaktivera varningen. Till exempel inaktiveras MSB3253
genom att ange egenskapen:
<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
None
</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
När det är möjligt använder du den mer explicita egenskapen eftersom en felkod i sig inte är lika lätt att förstå. Felreferenssidan för koden innehåller vanligtvis den egenskap som används för att inaktivera den.
Ignorera varningar för NuGet-paket
I vissa fall kanske du vill ignorera NuGet-kompilatorvarningar för ett enda NuGet-paket i stället för ett helt projekt. Varningen har ett syfte, så du vill inte utelämna den på projektnivå. En av NuGet-varningarna anger till exempel att paketet kanske inte är helt kompatibelt med projektet. Om du utelämnar det på projektnivå och senare lägger till ytterligare ett NuGet-paket, skulle du aldrig veta om det gav kompatibilitetsvarningen.
Så här utelämnar du en specifik varning för ett enda NuGet-paket
I Solution Explorerväljer du det NuGet-paket som du vill ignorera kompilatorvarningar för.
Högerklicka och välj Egenskaperfrån snabbmenyn.
I rutan Ignorera varningar i paketets egenskaper anger du det varningsnummer som du vill utelämna för det här paketet. Om du vill ignorera fler än en varning använder du ett kommatecken för att separera varningsnumren.
Varningen försvinner från Solution Explorer och Fellistan. I projektfilen anges egenskapen NoWarn.
<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>
Ignorera varningar om kodanalys
Diagnostikmeddelanden med koder som börjar med CA
är överträdelser och varningar för kodanalys, som skiljer sig från de kompilatorvarningar som beskrivs i den här artikeln. Du kan ignorera varningar om kodanalys på olika sätt, till exempel genom att använda platsspecifik markering och projektomfattande eller globalt, med hjälp av regelkonfigurationsfiler. Se Utelämna kodanalysvarningar och förhindra kodanalysöverträdelser.