Potlačení upozornění kompilátoru

V sadě Visual Studio můžete určit, která upozornění chcete potlačit, zadáním kódů upozornění v Návrháři projektu (stránky vlastností projektu). Upozornění můžete také potlačit nastavením určitých vlastností přímo v souboru projektu, přes příkazový řádek nebo v kódu, pokud chcete potlačit upozornění pouze v jednom umístění.

Některé kompilátory a nástroje sestavení mají také možnosti určit úroveň upozornění. Díky tomu můžete řídit kategorie upozornění pomocí jednoho nastavení. Tyto možnosti najdete v dokumentaci ke konkrétnímu jazyku a kompilátoru, který používáte:

Pokud je vaším cílem zobrazit v protokolu sestavení výstižnější a zaměřený výstup, můžete změnit úroveň podrobností protokolu sestavení. Dostupná nastavení jsou Normální, Podrobná nebo Diagnostická. Další informace o podrobnostech najdete v tématu Postupy: Zobrazení, uložení a konfigurace souborů protokolu sestavení.

Upozornění

Všimněte si, že upozornění jsou určená jako označení potenciálního problému s vaším kódem, takže byste měli rozumět rizikům zakázání konkrétního upozornění. Nastavení sady Visual Studio zakazuje upozornění na úrovni projektu. Možná budete chtít použít cílenější přístup k zakázání upozornění, než poskytuje Visual Studio. Většina kompilátorů poskytuje způsoby, jak zakázat upozornění jenom pro určité řádky kódu, abyste mohli upozornění stále zkontrolovat, pokud se vyskytují jinde ve stejném projektu.

Potlačení konkrétních upozornění pro Visual C# nebo F#

Pomocí vlastností sestavení můžete potlačit konkrétní upozornění pro celý projekt jazyka C# a F#. Pokud chcete potlačit upozornění pouze v konkrétní části kódu v jazyce C#, použijte #pragma upozornění. Pro jazyk F# použijte #nowarn direktivu preprocesoru k zakázání upozornění pro celý zdrojový soubor.

  1. V Průzkumník řešení zvolte projekt, ve kterém chcete potlačit upozornění.

  2. Klikněte pravým tlačítkem myši na uzel projektu a v místní nabídce zvolte Vlastnosti . Nebo vyberte uzel projektu a stiskněte Alt+Enter.

  3. Zvolte Sestavení a přejděte do pododdílu Chyby a upozornění.

  4. V poli Potlačit upozornění nebo Potlačit konkrétní upozornění zadejte kódy chyb upozornění, která chcete potlačit, oddělená středníky. Seznam a popisy kódů upozornění najdete v tématu Zprávy kompilátoru jazyka C#.

  5. Znovu sestavte řešení.

  1. V Průzkumník řešení zvolte projekt, ve kterém chcete potlačit upozornění.

  2. Klikněte pravým tlačítkem myši na uzel projektu a v místní nabídce zvolte Vlastnosti . Nebo vyberte uzel projektu a stiskněte Alt+Enter.

  3. Zvolte stránku nebo oddíl Sestavení a pokud jste v aktuálním uživatelském rozhraní, otevřete pododdíl Chyby a upozornění.

  4. V poli Potlačit upozornění nebo Potlačit konkrétní upozornění zadejte kódy chyb upozornění, která chcete potlačit, oddělená středníky. Seznam a popisy kódů upozornění najdete v tématu Zprávy kompilátoru jazyka C#.

  5. Znovu sestavte řešení.

Poznámka:

Některá upozornění nelze potlačit. Seznam těchto možností najdete v tématu NoWarn compiler option.

Potlačení konkrétních upozornění pro C++

Upozornění v projektu C++ můžete potlačit pomocí vlastností projektu; Pomocí stránky vlastností vlastnosti konfigurace potlačíte konkrétní upozornění pro celý projekt C++. Upozornění v konkrétních souborech můžete také potlačit pomocí .#pragma warning Tento článek se zabývá řízením na úrovni projektu, ale pokud je vaším záměrem zakázat upozornění v určitém souboru nebo jen kolem několika řádků kódu, ale chcete pokračovat v zobrazení dalších výskytů stejného upozornění, měli byste zvážit použití #pragma warning. Viz upozornění #pragma.

  1. V Průzkumník řešení zvolte projekt nebo zdrojový soubor, ve kterém chcete potlačit upozornění.

  2. Na řádku nabídek zvolte Zobrazit>stránky vlastností.

  3. Zvolte kategorii Vlastnosti konfigurace, zvolte kategorii C/C++ a pak zvolte stránku Upřesnit.

  4. Proveďte jeden z následujících kroků:

    • Do pole Zakázat konkrétní upozornění zadejte kódy chyb upozornění, která chcete potlačit, oddělená středníkem.

    • V okně Zakázat konkrétní upozornění zvolte Upravit , aby se zobrazily další možnosti.

  5. Zvolte tlačítko OK a pak řešení znovu sestavte.

Pokud je upozornění z jiného nástroje, projděte si dokumentaci ke konkrétnímu nástroji a zjistěte, jak můžete potlačit upozornění pro tento nástroj. Například linker C++ obsahuje některá upozornění, která můžete zakázat pomocí možnosti linkeru /IGNORE . Viz /IGNORE (ignorovat konkrétní upozornění) a tuto možnost nastavte, viz /link (předání možností linkeru).

Potlačení upozornění pro Visual Basic

Konkrétní upozornění kompilátoru pro Visual Basic můžete skrýt úpravou souboru .vbproj pro projekt. Chcete-li potlačit upozornění podle kategorie, můžete použít stránku vlastnosti Compile. Pokud chcete zakázat upozornění v konkrétní části souboru kódu, použijte direktivy #Disable a #Enable. Další informace naleznete v tématu Konfigurace upozornění v jazyce Visual Basic.

Potlačení konkrétních upozornění pro celý projekt jazyka Visual Basic

Tento příklad ukazuje, jak upravit soubor .vbproj a potlačit konkrétní upozornění kompilátoru.

  1. V Průzkumník řešení zvolte projekt, ve kterém chcete potlačit upozornění.

  2. Na řádku nabídek zvolte Project Unload Project>.

  3. V Průzkumník řešení otevřete místní nabídku projektu po kliknutí pravým tlačítkem myši nebo místní nabídku a pak zvolte Upravit <název_projektu.vbproj>.

    Soubor projektu XML se otevře v editoru kódu.

  4. <NoWarn> Vyhledejte prvek pro konfiguraci sestavení, se kterou vytváříte, a přidejte jedno nebo více čísel upozornění jako hodnotu <NoWarn> prvku. Pokud zadáte více čísel upozornění, oddělte je čárkou.

    Následující příklad ukazuje <NoWarn> element konfigurace sestavení debug na platformě x86 se dvěma potlačenými upozorněními kompilátoru:

    <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>
    

    Poznámka:

    Projekty .NET Core ve výchozím nastavení neobsahují skupiny vlastností konfigurace sestavení. Pokud chcete potlačit upozornění v projektu .NET Core, přidejte do souboru ručně oddíl konfigurace sestavení. Příklad:

    <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>
    
  5. Uložte změny do souboru .vbproj .

  6. Na řádku nabídek zvolte Projekt>znovu načíst.

  7. Na řádku nabídek zvolte Sestavit>znovu sestavit řešení.

    V okně Výstup se už nezobrazují upozornění, která jste zadali.

Další informace najdete v možnosti kompilátoru /nowarn pro kompilátor příkazového řádku jazyka Visual Basic.

Potlačení upozornění úpravou souboru projektu

Použití návrháře vlastností sady Visual Studio k potlačení upozornění způsobí změnu souboru projektu. Někdy může být vhodnější soubor projektu ručně upravit, aby se splnil úkol zakázání upozornění. Soubor projektu zpracovává nástroj MSBuild, modul sestavení Microsoftu. Viz MSBuild.

V sadě Visual Studio 2019 verze 16.7 a starších verzích navíc není možné potlačovat některá upozornění z jiných nástrojů než kompilátoru jiným způsobem.

  1. Pokud chcete otevřít soubor projektu v editoru sady Visual Studio, klikněte pravým tlačítkem myši na uzel projektu a zvolte Upravit soubor projektu. Některé typy projektů vyžadují, abyste projekt před úpravou souboru projektu odložili. Pokud potřebujete projekt uvolnit, klikněte pravým tlačítkem myši na uzel projektu a zvolte Uvolnit projekt.

  2. V nové PropertyGroup části použijte NoWarn vlastnost. Uveďte chyby, které chcete potlačit, oddělené čárkami nebo středníky. Pro upozornění kompilátoru můžete vynechat kód jazyka a zadat pouze číslo, ale pro přehlednost doporučujeme použít celý kód. Pro upozornění z jiných nástrojů v sestavení zadejte úplný kód, včetně předpony (například MSB pro upozornění vystavená samotným nástrojem MSBuild).

    Následující kód přidá do seznamu potlačené upozornění CS0028 a CS0618:

    <PropertyGroup>
       // Other properties
       <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
    </PropertyGroup>
    

    Odkazování na předchozí hodnotu $(NoWarn) , jak je znázorněno v předchozím příkladu, sečte tato čísla k jakékoli dříve nastavené hodnotě místo NoWarnpřepsání.

Viz NoWarn.

Potlačení upozornění z příkazového řádku sestavení

Pokud vytváříte projekt z příkazového řádku, můžete také potlačit upozornění pomocí -warnAsMessage příkazového řádku NÁSTROJE MSBuild. Použijte uvozovky v seznamech více kódů upozornění.

MSBuild.exe -warnAsMessage="CS0028;CS0618" MyProject.csproj

Viz referenční informace k příkazovému řádku nástroje MSBuild.

Potlačení upozornění nástroje

Způsob potlačení upozornění z jiných nástrojů než kompilátoru, například MSBuild, závisí na tom, jaký typ projektu máte a jakou verzi nástroje MSBuild používáte.

S MSBuild 16.8 a novějšími v projektech, které používají sadu SDK nebo standardní importy, můžete potlačit upozornění nástroje pomocí stejných metod popsaných výše. Je nutné zadat úplný kód chyby (včetně předpony, jako MSB je například msBuild), nejen čísla, jak je možné s upozorněním kompilátoru. Také zpráva není eliminována; pořád se zobrazuje jako informační zpráva, ale byla z upozornění degradována.

S MSBuild 16.7 a staršími a v jakémkoli projektu, který nepoužívá sadu SDK nebo standardní importy, nejsou tato upozornění potlačována pomocí NoWarn. V takových případech je vlastnost, kterou můžete použít k potlačení upozornění nástroje .MSBuildWarningsAsMessages Upozornění sestavení můžete potlačit úpravou souboru projektu nebo zadáním MSBuildWarningsAsMessages možnosti na příkazovém řádku MSBuild. Při použití použijte MSBuildWarningsAsMessagesúplný kód chyby NÁSTROJE MSBuild, včetně předpony MSB .

<PropertyGroup>
    <MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3270</MSBuildWarningsAsMessages>
</PropertyGroup>

Všimněte si, že některá upozornění nástroje MSBuild nelze potlačit nastavením MSBuildWarningsAsMessages. Pokud je chcete zakázat, použijte možnost warnAsMessagepříkazového řádku .

Některá upozornění mají také konkrétní vlastnosti, které můžete nastavit tak, aby se upozornění zakázalo. Například MSB3253 je zakázán nastavením vlastnosti:

 <PropertyGroup>
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
        None
    </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
  </PropertyGroup>

Pokud je to možné, použijte explicitnější vlastnost, protože kód chyby sám o sobě není tak snadno srozumitelný. Stránka s referenčními informacemi o chybě pro kód obvykle obsahuje vlastnost, která se používá k zakázání.

Potlačení upozornění pro balíčky NuGet

V některých případech můžete chtít potlačit upozornění kompilátoru NuGet pro jeden balíček NuGet místo pro celý projekt. Upozornění slouží k účelu, takže ho nechcete potlačit na úrovni projektu. Například jedno z upozornění NuGetu říká, že balíček nemusí být plně kompatibilní s vaším projektem. Pokud ho potlačíte na úrovni projektu a později přidáte další balíček NuGet, nikdy byste nevěděli, jestli vytváří upozornění kompatibility.

Potlačení konkrétního upozornění pro jeden balíček NuGet

  1. V Průzkumník řešení vyberte balíček NuGet, pro který chcete potlačit upozornění kompilátoru.

    Screenshot of NuGet package in Solution Explorer.

    Screenshot of NuGet package in Solution Explorer.

  2. V místní nabídce nebo kliknutí pravým tlačítkem vyberte Vlastnosti.

  3. Do pole Potlačit upozornění vlastností balíčku zadejte číslo upozornění, které chcete pro tento balíček potlačit. Pokud chcete potlačit více než jedno upozornění, oddělte čísla upozornění čárkou.

    NuGet package properties

    Screenshot of NuGet package properties

    Upozornění zmizí z Průzkumník řešení a seznamu chyb. V souboru projektu je vlastnost NoWarn nastavena.

     <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>