Pomijanie ostrzeżeń kompilatora

W programie Visual Studio możesz określić ostrzeżenia, które mają zostać pominięte, określając kody ostrzegawcze w Projektant projektu (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 Normalny, Szczegółowy lub Diagnostyczny. Aby uzyskać więcej informacji na temat szczegółowości, zobacz Jak wyświetlać, zapisywać i konfigurować pliki dziennika kompilacji.

Uwaga

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 kompilacji, aby pominąć określone ostrzeżenia dla całego projektu 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 preprocesora #nowarn , aby wyłączyć ostrzeżenie dla całego pliku źródłowego.

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

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

  3. Wybierz pozycję Kompilacja i przejdź do podsekcji Błędy i ostrzeżenia.

  4. W polu Pomiń ostrzeżenia lub Pomiń określone ostrzeżenia 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. Skompiluj ponownie rozwiązanie.

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

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

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

  4. W polu Pomiń ostrzeżenia lub Pomiń określone ostrzeżenia 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. Skompiluj ponownie rozwiązanie.

Uwaga

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

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

Ostrzeżenia w projekcie języka C++ można pominąć przy użyciu właściwości projektu; Strona właściwości Właściwości konfiguracji służy do pomijania określonych ostrzeżeń dla całego projektu języka C++. Można również pominąć ostrzeżenia w określonych plikach przy użyciu polecenia #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 polecenia #pragma warning. Zobacz ostrzeżenie #pragma.

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

  2. Na pasku menu wybierz pozycję Wyświetl>strony właściwości.

  3. Wybierz kategorię Właściwości konfiguracji, 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 określ kody błędów ostrzeżeń, które mają zostać pominięte, oddzielone średnikiem.

    • W polu Wyłącz określone ostrzeżenia wybierz pozycję 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ć za pomocą opcji konsolidatora /IGNORE . Zobacz /IGNORE (Ignoruj określone ostrzeżenia) i aby ustawić tę opcję, zobacz /link (Opcje przekazywania do konsolidatora).

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 pominąć ostrzeżenia według kategorii, możesz użyć strony właściwości Compile. 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 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 Eksplorator rozwiązań wybierz projekt, w którym chcesz pominąć ostrzeżenia.

  2. Na pasku menu wybierz pozycję Projekt zwolnij projekt>.

  3. W Eksplorator rozwiązań otwórz prawym przyciskiem myszy lub menu skrótów dla projektu, a następnie wybierz polecenie Edytuj <projectName.vbproj>.

    Plik projektu XML zostanie otwarty w edytorze kodu.

  4. <NoWarn> Znajdź element konfiguracji kompilacji, z którym tworzysz, i dodaj co najmniej jedną liczbę ostrzeżeń jako wartość <NoWarn> elementu. Jeśli określisz wiele numerów ostrzeżeń, oddziel je przecinkami.

    Poniższy przykład przedstawia <NoWarn> element konfiguracji kompilacji debugowania na platformie x86 z dwoma ostrzeżeniami kompilatora pominiętymi:

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

    Uwaga

    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 (Załaduj ponownie projekt).>

  7. Na pasku menu wybierz pozycję Kompiluj>ponownie rozwiązanie.

    W oknie Dane wyjściowe nie są już wyświetlane określone ostrzeżenia.

Aby uzyskać więcej informacji, zobacz /nowarn kompilator opcji 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 polecenie Edytuj plik projektu. Niektóre typy projektów wymagają zwolnienia projektu przed rozpoczęciem edycji pliku projektu. Jeśli chcesz zwolnić projekt, kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Zwolnij projekt.

  2. W nowej PropertyGroup sekcji użyj NoWarn właściwości . 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 w przypadku ostrzeżeń wystawionych 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 poprzedniej wartości , $(NoWarn) jak pokazano w poprzednim przykładzie, dodaje te liczby do dowolnej wcześniej ustawionej wartości dla NoWarn, a nie zastępowania.

Zobacz NoWarn.

Pomijanie ostrzeżenia z wiersza polecenia kompilacji

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

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

Zobacz dokumentacja wiersza polecenia MSBuild.

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 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 zestawu SDK ani standardowych importów, ostrzeżenia te nie są pomijane przy użyciu polecenia NoWarn. W takich przypadkach właściwość , której można użyć do pomijania ostrzeżeń narzędzi, to MSBuildWarningsAsMessages. Ostrzeżenia kompilacji można pominąć, edytując plik projektu lub określając MSBuildWarningsAsMessages opcję w wierszu polecenia MSBuild. W przypadku korzystania z programu 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 warnAsMessagewiersza polecenia .

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 jest wyłączona przez MSB3253 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 odwołania do błędu dla kodu zwykle 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 Eksplorator rozwiązań wybierz pakiet NuGet, dla którego chcesz pominąć ostrzeżenia kompilatora.

    Screenshot of NuGet package in Solution Explorer.

    Screenshot of NuGet package in Solution Explorer.

  2. W menu kontekstowym lub prawym przyciskiem myszy wybierz pozycję Właściwości.

  3. W polu Pomijanie ostrzeżeń we właściwościach 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ń.

    NuGet package properties

    Screenshot of NuGet package properties

    Ostrzeżenie zniknie z Eksplorator 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>