Udostępnij za pośrednictwem


Pomijanie ostrzeżeń kompilatora

Za pomocą programu Visual Studio można określić, które ostrzeżenia mają zostać pominięte, określając kody ostrzegawcze w projektancie projektów (strony właściwości projektu). Możesz również pominąć ostrzeżenia, ustawiając niektóre właściwości bezpośrednio w pliku projektu, za pośrednictwem wiersza polecenia lub w kodzie, gdy chcesz pominąć ostrzeżenie tylko w jednej lokalizacji.

Niektóre kompilatory i narzędzia kompilacji mają również opcje określania poziomu ostrzeżenia. Dzięki temu można kontrolować kategorie ostrzeżeń za pomocą jednego ustawienia. Aby uzyskać te opcje, zobacz dokumentację dla określonego języka i kompilatora, którego używasz:

Jeśli twoim celem jest wyświetlanie bardziej zwięzłych i skoncentrowanych danych wyjściowych w dzienniku kompilacji, warto zmienić szczegółowość dziennika kompilacji. Dostępne ustawienia to Normal, Szczegółowelub Diagnostyczne. Aby uzyskać więcej informacji na temat szczegółowości, zobacz Instrukcje: wyświetlanie, zapisywanie i konfigurowanie plików dziennika kompilacji.

Ostrożność

Należy pamiętać, że ostrzeżenia mają wskazywać potencjalny problem z kodem, dlatego należy zrozumieć ryzyko wyłączenia dowolnego konkretnego ostrzeżenia. Ustawienia programu Visual Studio wyłączają ostrzeżenia na poziomie projektu. Możesz użyć bardziej ukierunkowanego podejścia do wyłączania ostrzeżeń niż zapewnia program Visual Studio. Większość kompilatorów udostępnia sposoby wyłączania ostrzeżeń tylko dla niektórych wierszy kodu, dzięki czemu można nadal przeglądać ostrzeżenia, jeśli wystąpią w innym miejscu w tym samym projekcie.

Pomijanie określonych ostrzeżeń dotyczących języka Visual C# lub F#

Użyj właściwości Build, aby pominąć określone ostrzeżenia dla całego projektu języka C# i F#. Jeśli chcesz pominąć ostrzeżenie tylko w określonej części kodu w języku C#, użyj ostrzeżenia #pragma. W przypadku języka F# użyj dyrektywy #nowarn preprocesora, aby wyłączyć ostrzeżenie dla całego pliku źródłowego.

  1. W eksploratorze rozwiązań wybierz projekt, w którym chcesz pominąć ostrzeżenia.

  2. Kliknij prawym przyciskiem myszy na węźle projektu, a następnie wybierz pozycję Właściwości w menu kontekstowym. Możesz też wybrać węzeł projektu i nacisnąć Alt+Enter.

  3. Wybierz pozycję Buildi przejdź do podsekcji Errors and warnings (Błędy i ostrzeżenia).

  4. W polu Pomijanie ostrzeżeń lub Pomijanie określonych ostrzeżeń określ kody błędów ostrzeżeń, które mają zostać pominięte, oddzielone średnikami. Aby uzyskać listę i opisy kodów ostrzeżeń, zobacz Komunikaty kompilatora języka C#.

  5. Ponownie skompiluj rozwiązanie.

  1. W eksploratorze rozwiązań wybierz projekt, w którym chcesz pominąć ostrzeżenia.

  2. Kliknij prawym przyciskiem myszy węzeł projektu i wybierz pozycję Właściwości w menu kontekstowym. Możesz też wybrać węzeł projektu i nacisnąć Alt+Enter.

  3. Wybierz stronę lub sekcję kompilacji, a jeśli jesteś w bieżącym interfejsie użytkownika, otwórz podsekcję Błędy i ostrzeżenia.

  4. W polu Pomijanie ostrzeżeń lub Pomijanie określonych ostrzeżeń określ kody błędów ostrzeżeń, które mają zostać pominięte, oddzielone średnikami. Aby uzyskać listę i opisy kodów ostrzeżeń, zobacz komunikaty kompilatora C#.

  5. Ponownie skompiluj rozwiązanie.

Notatka

Niektórych ostrzeżeń nie można pominąć. Aby uzyskać listę elementów, zobacz opcję kompilatora NoWarn .

Pomijanie określonych ostrzeżeń dla języka C++

Można zablokować ostrzeżenia w projekcie C++, używając właściwości projektu; użyj strony właściwości Właściwości konfiguracji do zablokowania określonych ostrzeżeń dla całego projektu C++. Ostrzeżenia w określonych plikach można również pominąć przy użyciu #pragma warning. W tym artykule opisano kontrolę na poziomie projektu, ale jeśli twoim zamiarem jest wyłączenie ostrzeżenia w określonym pliku lub tylko kilka wierszy kodu, ale chcesz nadal widzieć inne wystąpienia tego samego ostrzeżenia, należy rozważyć użycie #pragma warning. Zobacz #pragma ostrzeżenie.

  1. W eksploratorze rozwiązań wybierz projekt lub plik źródłowy, w którym chcesz pominąć ostrzeżenia.

  2. Na pasku menu wybierz pozycję View>Property Pages.

  3. Wybierz kategorię Konfiguracja , wybierz kategorię C/C++, a następnie wybierz stronę Zaawansowane.

  4. Wykonaj jedną z następujących czynności:

    • W polu Wyłącz określone ostrzeżenia, wprowadź kody błędów ostrzeżeń, które chcesz zignorować, oddzielając je średnikiem.

    • W polu Wyłączanie Określonych Ostrzeżeń wybierz Edytuj, aby wyświetlić więcej opcji.

  5. Wybierz przycisk OK, a następnie ponownie skompiluj rozwiązanie.

Jeśli ostrzeżenie pochodzi z innego narzędzia, zapoznaj się z dokumentacją konkretnego narzędzia, aby dowiedzieć się, jak można pominąć ostrzeżenia dla tego narzędzia. Na przykład konsolidator języka C++ zawiera pewne ostrzeżenia, które można wyłączyć przy użyciu opcji konsolidatora /IGNORE. Zobacz /IGNORE (Ignoruj określone ostrzeżenia) i aby ustawić tę opcję, zobacz /link (Przekazywanie opcji do linker).

Pomijanie ostrzeżeń dotyczących języka Visual Basic

Możesz ukryć określone ostrzeżenia kompilatora dla języka Visual Basic, edytując plik .vbproj dla projektu. Aby usunąć ostrzeżenia według kategorii , możesz użyć strony właściwości Kompilacji . Jeśli chcesz wyłączyć ostrzeżenie w określonej części pliku kodu, użyj dyrektyw #Disable i #Enable. Aby uzyskać więcej informacji, zobacz Konfigurowanie ostrzeżeń w programie Visual Basic.

Aby pominąć określone ostrzeżenia dla całego projektu Visual Basic

W tym przykładzie pokazano, jak edytować plik .vbproj w celu pomijania określonych ostrzeżeń kompilatora.

  1. W eksploratorze rozwiązań wybierz projekt, w którym chcesz pominąć ostrzeżenia.

  2. Na pasku menu wybierz pozycję Project>Unload Project.

  3. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt, aby otworzyć menu kontekstowe lub menu skrótów, a następnie wybierz pozycję Edytuj <ProjectName>.vbproj.

    Plik projektu XML zostanie otwarty w edytorze kodu.

  4. Znajdź element <NoWarn> dla konfiguracji kompilacji używanej do budowania i dodaj jeden lub więcej numerów ostrzeżeń jako wartość elementu <NoWarn>. Jeśli określisz wiele numerów ostrzeżeń, oddziel je przecinkami.

    W poniższym przykładzie przedstawiono element <NoWarn> dla konfiguracji kompilacji Debug na platformie x86, z dwoma wyłączonymi ostrzeżeniami kompilatora:

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

    Notatka

    Projekty platformy .NET Core nie zawierają domyślnie grup właściwości konfiguracji kompilacji. Aby pominąć ostrzeżenia w projekcie .NET Core, dodaj sekcję konfiguracji kompilacji do pliku ręcznie. Na przykład:

    <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. Zapisz zmiany w pliku .vbproj.

  6. Na pasku menu wybierz pozycję Project>Reload Project.

  7. Na pasku menu wybierz Build>Rebuild Solution.

    Okno danych wyjściowych już nie pokazuje ostrzeżeń, które określiłeś.

Aby uzyskać więcej informacji, zobacz opcję kompilatora /nowarn dla kompilatora wiersza polecenia języka Visual Basic.

Możesz wyłączyć ostrzeżenia indywidualnie lub według kategorii. Środowisko różni się w zależności od tego, czy pracujesz z projektem .NET Framework, czy projektem .NET Core (lub .NET 5 lub nowszym).

Jeśli chcesz wyłączyć ostrzeżenie w określonej części pliku kodu, użyj dyrektyw #Disable i #Enable. Aby uzyskać więcej informacji, zobacz Konfigurowanie ostrzeżeń w programie Visual Basic.

Projekty platformy .NET 5 lub nowsze

Plik projektu można edytować, aby pominąć określone ostrzeżenia kompilatora według kodów diagnostycznych lub pominąć ostrzeżenia według kategorii przy użyciu projektanta projektów. Aby otworzyć projektanta projektu, wybierz węzeł projektu, kliknij prawym przyciskiem myszy i wybierz pozycję właściwości lub naciśnij Alt+Enter.

W sekcji Compile wybierz pozycję Warnings. W obszarze Stopień ważności ostrzeżeniamożesz wybrać opcję Ustaw stopnie ważności ostrzeżeń indywidualnie. Kategorie są wyświetlane, a Ty masz opcję ustawienia każdej kategorii na Brak, aby wyłączyć kategorię ostrzeżeń, lub ustawić ją na Ostrzeżenie albo Błąd, aby ją włączyć jako ostrzeżenie lub błąd.

Zrzut ekranu przedstawiający ustawienie stopnia ostrzeżenia dla projektu Visual Basic .NET.

Projekty programu .NET Framework

Możesz ukryć określone ostrzeżenia kompilatora dla języka Visual Basic, edytując plik .vbproj dla projektu. Aby wyłączyć ostrzeżenia według kategorii , możesz użyć strony właściwości kompilacji .

Aby pominąć określone ostrzeżenia dla całego projektu Visual Basic

W tym przykładzie pokazano, jak edytować plik .vbproj w celu pomijania określonych ostrzeżeń kompilatora.

  1. W eksploratorze rozwiązań wybierz projekt, w którym chcesz pominąć ostrzeżenia.

  2. (.NET) Kliknij dwukrotnie węzeł projektu, aby otworzyć plik projektu.

    (.NET Framework) Na pasku menu wybierz pozycję Project>Unload Project. Następnie w Eksploratorze rozwiązań użyj menu kontekstowego lub skrótów dla projektu, a następnie wybierz pozycję Edytuj <ProjectName>.vbproj.

    Plik projektu MSBuild zostanie otwarty w edytorze kodu. Jest to plik XML.

  3. Znajdź element <NoWarn> dla używanej konfiguracji kompilacji i dodaj jedną lub więcej liczb ostrzeżeń jako wartość elementu <NoWarn>. Jeśli określisz wiele numerów ostrzeżeń, oddziel je przecinkami.

    W poniższym przykładzie przedstawiono element <NoWarn> dla konfiguracji kompilacji debug na platformie x86, z dwoma ostrzeżeniami kompilatora zablokowanymi:

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

    Notatka

    Projekty .NET Core i .NET 5 oraz późniejsze nie mają domyślnie grup właściwości konfiguracji budowy. Aby pominąć ostrzeżenia w projekcie .NET Core, dodaj sekcję konfiguracji kompilacji do pliku ręcznie. Na przykład:

    <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>
    
  4. Zapisz zmiany w pliku .vbproj.

  5. Na pasku menu wybierz pozycję Project>Reload Project.

  6. Na pasku narzędzi wybierz opcję Build>Rebuild Solution.

    Okno danych wyjściowych nie pokazuje już określonych ostrzeżeń.

Aby uzyskać więcej informacji, zobacz opcję kompilatora /nowarn dla kompilatora wiersza polecenia języka Visual Basic.

Pomijanie ostrzeżenia przez edytowanie pliku projektu

Użycie projektanta właściwości programu Visual Studio do pomijania ostrzeżeń powoduje zmianę pliku projektu. Czasami można wygodniej edytować plik projektu w celu wykonania zadania wyłączenia ostrzeżenia. Plik projektu jest przetwarzany przez program MSBuild, aparat kompilacji firmy Microsoft. Zobacz MSBuild.

Ponadto w programie Visual Studio 2019 w wersji 16.7 lub starszej niektóre ostrzeżenia z narzędzi innych niż kompilator nie mogą być pomijane w żaden inny sposób.

  1. Aby otworzyć plik projektu w edytorze programu Visual Studio, kliknij prawym przyciskiem myszy węzeł projektu i wybierz Edytuj plik projektu. Niektóre typy projektów wymagają wyładowania projektu przed edytowaniem pliku projektowego. Jeśli chcesz rozładować projekt, kliknij prawym przyciskiem myszy na węźle projektu, a następnie wybierz opcję Rozładuj projekt.

  2. W nowej sekcji PropertyGroup użyj właściwości NoWarn. Wyświetl listę błędów, które chcesz pominąć, oddzielone przecinkami lub średnikami. W przypadku ostrzeżeń kompilatora można pominąć kod języka i wprowadzić tylko liczbę, ale w celu zapewnienia przejrzystości zalecamy użycie pełnego kodu. W przypadku ostrzeżeń innych narzędzi w kompilacji określ pełny kod, w tym prefiks (na przykład MSB dla ostrzeżeń wydanych przez program MSBuild).

    Poniższy kod dodaje ostrzeżenia CS0028 i CS0618 do listy pominiętych ostrzeżeń:

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

    Odwołując się do wcześniejszej wartości $(NoWarn), jak pokazano w poprzednim przykładzie, dodaje te wartości do każdej wcześniej ustawionej wartości NoWarn, zamiast ją zastępować.

Zobacz NoWarn.

Pomijanie ostrzeżenia z wiersza polecenia kompilacji

Jeśli tworzysz projekt z poziomu wiersza polecenia, możesz również pominąć ostrzeżenia przy użyciu -warnAsMessage w wierszu polecenia MSBuild. Użyj cudzysłowów wokół list wielu kodów ostrzegawczych.

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

Zobacz informacje o wierszu polecenia MSBuild.

Zignoruj ostrzeżenia dla wszystkich projektów i rozwiązań w strukturze katalogów

Ostrzeżenia dla wielu projektów można pominąć jednocześnie, jeśli znajdują się one we wspólnym katalogu w systemie plików przy użyciu pliku MSBuild Directory.Build.props. Zobacz Dostosowywanie kompilacji według katalogu. Jeśli na przykład umieścisz następujący plik Directory.Build.props w katalogu głównym folderu zawierającego wiele rozwiązań i projektów, możesz pominąć określoną listę ostrzeżeń dla wszystkich projektów w tym folderze oraz rekursywnie w jego podfolderach.

<Project>
   <PropertyGroup>
      <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
   </PropertyGroup>
</Project>

Pomijanie ostrzeżeń narzędzi

Sposób pomijania ostrzeżeń z narzędzi innych niż kompilator, takich jak MSBuild, zależy od typu posiadanego projektu i używanej wersji programu MSBuild.

W programie MSBuild 16.8 lub nowszym w projektach korzystających z zestawu SDK lub importu standardowego można pominąć ostrzeżenia narzędzi przy użyciu tych samych metod opisanych wcześniej. Należy określić pełny kod błędu (w tym prefiks, taki jak MSB dla programu MSBuild), a nie tylko liczbę, jak można z ostrzeżeniem kompilatora. Ponadto komunikat nie jest wyeliminowany; nadal jest wyświetlany jako komunikat informacyjny, ale został zdegradowany z ostrzeżenia.

W programie MSBuild w wersji 16.7 lub starszej oraz w każdym projekcie, który nie korzysta z pakietu SDK ani standardowych importów, ostrzeżenia te nie są pomijane za pomocą NoWarn. W takich przypadkach właściwość służąca do pomijania ostrzeżeń narzędzi to MSBuildWarningsAsMessages. Ostrzeżenia kompilacji można pominąć, edytując plik projektu lub określając opcję MSBuildWarningsAsMessages w wierszu polecenia MSBuild. W przypadku korzystania z MSBuildWarningsAsMessagesużyj pełnego kodu błędu MSBuild, w tym prefiksu MSB.

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

Należy pamiętać, że niektórych ostrzeżeń programu MSBuild nie można pominąć przez ustawienie MSBuildWarningsAsMessages. Aby je wyłączyć, użyj opcji wiersza polecenia warnAsMessage.

Ponadto niektóre ostrzeżenia mają określone właściwości, które można ustawić, aby wyłączyć ostrzeżenie. Na przykład MSB3253 jest wyłączona przez ustawienie właściwości:

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

Jeśli to możliwe, użyj bardziej jawnej właściwości, ponieważ kod błędu sam w sobie nie jest tak czytelny. Strona z odwołaniem do błędu dla kodu zazwyczaj zawiera właściwość, która jest używana do jego wyłączenia.

Pomijanie ostrzeżeń dotyczących pakietów NuGet

W niektórych przypadkach możesz pominąć ostrzeżenia kompilatora NuGet dla pojedynczego pakietu NuGet zamiast dla całego projektu. Ostrzeżenie służy celowi, więc nie chcesz pomijać go na poziomie projektu. Na przykład jedno z ostrzeżeń narzędzia NuGet informuje o tym, że pakiet może nie być w pełni zgodny z projektem. Jeśli pominiesz go na poziomie projektu, a później dodasz dodatkowy pakiet NuGet, nigdy nie będziesz wiedzieć, czy generuje ostrzeżenie o zgodności.

Aby pominąć określone ostrzeżenie dla pojedynczego pakietu NuGet

  1. W eksploratorze rozwiązań wybierz pakiet NuGet, dla którego chcesz pominąć ostrzeżenia kompilatora.

    zrzut ekranu przedstawiający pakiet NuGet w Eksploratorze rozwiązań.

    zrzut ekranu przedstawiający pakiet NuGet w Eksploratorze rozwiązań.

  2. Kliknij prawym przyciskiem myszy i z menu kontekstowego wybierz pozycję Właściwości.

  3. W polu Pomijanie ostrzeżeń właściwości pakietu wprowadź numer ostrzeżenia, który chcesz pominąć dla tego pakietu. Jeśli chcesz pominąć więcej niż jedno ostrzeżenie, użyj przecinka, aby oddzielić numery ostrzeżeń.

    właściwości pakietu NuGet

    zrzut ekranu przedstawiający właściwości pakietu NuGet

    Ostrzeżenie zniknie z Eksploratora rozwiązań i listy błędów . W pliku projektu właściwość NoWarn jest ustawiona.

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

Pomijanie ostrzeżeń dotyczących analizy kodu

Komunikaty diagnostyczne z kodami rozpoczynającymi się od CA to naruszenia i ostrzeżenia analizy kodu, które różnią się od ostrzeżeń kompilatora omówionych w tym artykule. Ostrzeżenia analizy kodu można pominąć na różne sposoby, w tym przy użyciu znaczników specyficznych dla witryny, dla całego projektu lub globalnie, za pomocą plików konfiguracyjnych reguł. Zobacz Tłumienie ostrzeżeń dotyczących analizy kodu i Tłumienie naruszeń zasad analizy kodu.