Partilhar via


Suprimir avisos do compilador

Com o Visual Studio, você pode especificar quais avisos deseja suprimir especificando os códigos de aviso no Project Designer (páginas de propriedades do projeto). Você também pode suprimir avisos definindo determinadas propriedades diretamente no arquivo de projeto, por meio da linha de comando ou em código quando quiser suprimir um aviso em apenas um local.

Alguns compiladores e ferramentas de compilação também têm opções para especificar o nível de aviso. Isso permite controlar categorias de avisos com uma configuração. Para essas opções, consulte a documentação do idioma específico e do compilador que você está usando:

Se o seu objetivo é ver uma saída mais concisa e focada em seu log de compilação, você pode querer alterar a verbosidade do log de compilação. As configurações disponíveis são Normal, Detalhado, ou Diagnóstico. Para mais informações sobre verborreia, consulte Como: Exibir, salvar e configurar arquivos de log de build.

Atenção

Observe que os avisos destinam-se a ser uma indicação de um problema potencial com seu código, portanto, você deve entender os riscos de desabilitar qualquer aviso específico. As configurações do Visual Studio desabilitam avisos no nível do projeto. Talvez você queira usar uma abordagem mais direcionada para desabilitar avisos do que o Visual Studio fornece. A maioria dos compiladores fornece maneiras de desabilitar avisos apenas para determinadas linhas de código, para que você ainda possa revisar os avisos se eles ocorrerem em outro lugar no mesmo projeto.

Suprimir avisos específicos para Visual C# ou F#

Use as propriedades Build para suprimir avisos específicos para um projeto C# e F# inteiro. Se quiser suprimir um warning somente em uma parte específica do código em C#, use #pragma warning. Para F#, utilize a diretiva de pré-processador #nowarn para desativar um aviso para um arquivo inteiro de origem.

  1. No Gerenciador de Soluções , escolha o projeto no qual você deseja suprimir avisos.

  2. Clique com o botão direito do rato no nó do projeto e escolha Propriedades no menu de contexto . Ou, selecione o nó do projeto e pressione Alt+Enter.

  3. Escolha a Compilação e vá para a subseção Erros e avisos .

  4. Na caixa Suprimir avisos ou Suprimir avisos específicos, especifique os códigos de erro dos avisos que deseja suprimir, separados por ponto-e-vírgula. Para obter uma lista e descrições de códigos de aviso, consulte C# Compiler Messages.

  5. Reconstrua a solução.

Observação

Alguns avisos não podem ser suprimidos. Para obter uma lista deles, consulte opção do compilador NoWarn.

Suprimir avisos específicos para C++

Você pode suprimir avisos em um projeto C++ usando as propriedades do projeto; você usa o Configuration Properties página de propriedades para suprimir avisos específicos para um projeto C++ inteiro. Você também pode suprimir avisos em arquivos específicos usando #pragma warning. Este artigo aborda o controle no nível do projeto, mas se sua intenção é desabilitar um aviso em um arquivo específico ou apenas em torno de algumas linhas de código, mas você deseja continuar a ver outras ocorrências do mesmo aviso, você deve considerar o uso de #pragma warning. Consulte #pragma aviso.

  1. No Gerenciador de Soluções , escolha o projeto ou o arquivo de origem no qual você deseja suprimir avisos.

  2. Na barra de menus, escolha Exibir>Páginas de Propriedades.

  3. Escolha a categoria Propriedades de Configuração, escolha a categoria C/C++ e, em seguida, escolha a página Avançado.

  4. Execute uma das seguintes etapas:

    • Na caixa Desativar Avisos Específicos, especifique os códigos de erro dos avisos que deseja suprimir, separados por ponto-e-vírgula.

    • Na caixa Desativar Avisos Específicos, escolha Editar para mostrar mais opções.

  5. Escolha o botão OK e, em seguida, reconstrua a solução.

Se o aviso for de outra ferramenta, consulte a documentação da ferramenta específica para descobrir como você pode suprimir avisos para essa ferramenta. Por exemplo, o vinculador C++ tem alguns avisos que você pode desativar usando a opção /IGNORE vinculador. Consulte /IGNORE (Ignorar avisos específicos) e, para definir essa opção, consulte /link (Passar opções para o vinculador).

Suprimir avisos para Visual Basic

Você pode suprimir avisos individualmente ou por categoria. A experiência difere dependendo se você está trabalhando com um projeto .NET Framework ou um projeto .NET Core (ou .NET 5 e posterior).

Se você quiser desativar um aviso em uma parte específica de um arquivo de código, use as diretivas #Disable e #Enable. Para obter mais informações, consulte Configurar avisos no Visual Basic.

Projetos .NET 5 ou posteriores

Você pode editar o arquivo de projeto para suprimir avisos específicos do compilador pelos códigos de diagnóstico ou pode suprimir avisos por categoria usando o Project Designer. Para abrir o designer de projeto, selecione o nó do projeto, clique com o botão direito do mouse e escolha Propriedadesou pressione Alt+Enter.

Na seção Compilar, escolha Avisos. Em gravidade de aviso, você pode escolher definir gravidades de aviso individualmente. As categorias são mostradas e tem a opção de definir cada categoria como Nenhuma para desabilitar a categoria de aviso ou defini-la como Aviso ou Erro para habilitá-la como um aviso ou erro.

Captura de tela mostrando a configuração de gravidade de aviso para um projeto do Visual Basic .NET.

Projetos do .NET Framework

Você pode ocultar avisos específicos do compilador para Visual Basic editando o arquivo de .vbproj para o projeto. Para suprimir avisos por categoria, você pode usar a página de propriedades Compilar.

Para suprimir avisos específicos para um projeto Visual Basic inteiro

Este exemplo mostra como editar o arquivo .vbproj para suprimir avisos específicos do compilador.

  1. No Gerenciador de Soluções , escolha o projeto no qual você deseja suprimir avisos.

  2. (.NET) Clique duas vezes no nó do projeto para abrir o arquivo de projeto.

    (.NET Framework) Na barra de menus, escolha Project>Unload Project. Em seguida, no Explorador de Soluções , abra o menu de atalho ou clique com o botão direito do rato no projeto e escolha Editar <ProjectName>.vbproj.

    O arquivo de projeto MSBuild é aberto no editor de código. Este é um arquivo XML.

  3. Encontre o elemento <NoWarn> para a configuração de compilação que está a compilar, e adicione um ou mais números de aviso como o valor do elemento <NoWarn>. Se você especificar vários números de aviso, separe-os com uma vírgula.

    O exemplo a seguir mostra o elemento <NoWarn> para a configuração Debug build em uma plataforma x86, com dois avisos de compilador suprimidos:

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

    Observação

    O .NET Core e o .NET 5 e projetos posteriores não contêm grupos de propriedades de configuração de compilação por padrão. Para suprimir avisos em um projeto .NET Core, adicione a seção de configuração de compilação ao arquivo manualmente. Por exemplo:

    <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. Salve as alterações no arquivo .vbproj.

  5. Na barra de menus, escolha Projeto>Recarregar Projeto.

  6. Na barra de menus, escolha Build>Rebuild Solution.

    A janela Output não mostra mais os avisos especificados.

Para obter mais informações, consulte a opção de compilador /nowarn para o compilador de linha de comando do Visual Basic.

Suprimir um aviso editando o arquivo de projeto

Usar o designer de propriedades do Visual Studio para suprimir avisos resulta em uma alteração no arquivo de projeto. Às vezes, pode ser mais conveniente editar manualmente o arquivo de projeto para realizar a tarefa de desativar um aviso. O arquivo de projeto é processado pelo MSBuild, mecanismo de compilação da Microsoft. Consulte MSBuild.

Além disso, no Visual Studio 2019 versão 16.7 e anteriores, alguns avisos de ferramentas diferentes do compilador não podem ser suprimidos de outra forma.

  1. Para abrir o arquivo de projeto no editor do Visual Studio, clique com o botão direito do mouse no nó do projeto e escolha Editar arquivo de projeto. Alguns tipos de projeto exigem que você descarregue o projeto antes de editar o arquivo de projeto. Se você precisar descarregar o projeto, clique com o botão direito do mouse no nó do projeto e escolha Descarregar projeto.

  2. Em uma nova seção PropertyGroup, use a propriedade NoWarn. Liste os erros que deseja suprimir, separados por vírgulas ou ponto-e-vírgula. Para avisos do compilador, você pode omitir o código do idioma e inserir apenas o número, mas, para maior clareza, recomendamos o uso do código completo. Para avisos de outras ferramentas na compilação, especifique o código completo, incluindo o prefixo (como MSB para avisos emitidos pelo próprio MSBuild).

    O código a seguir adiciona avisos CS0028 e CS0618 à lista de avisos suprimidos:

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

    A referência ao valor anterior de $(NoWarn) como mostrado no exemplo anterior adiciona esses números a qualquer valor definido anteriormente para NoWarn, em vez de substituí-lo.

Consulte NoWarn.

Eliminar um aviso do comando de criação

Se você estiver criando um projeto a partir da linha de comando, você também pode suprimir avisos usando -warnAsMessage na linha de comando do MSBuild. Use aspas em torno de listas de vários códigos de aviso.

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

Consulte a referência da linha de comando do MSBuild .

Suprimir todas as advertências para todos os projetos e soluções numa estrutura de diretórios

Você pode suprimir avisos para muitos projetos de uma só vez se todos eles estiverem sob um diretório comum no sistema de arquivos usando o arquivo MSBuild Directory.Build.props. Veja Personalizar compilações por diretório. Por exemplo, se você colocar o seguinte arquivo Directory.Build.props na raiz de uma pasta com muitas soluções e projetos, poderá suprimir uma lista especificada de avisos para todos os projetos nessa pasta e recursivamente para pastas dentro dela.

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

Suprimir avisos da ferramenta

Como você suprime avisos de ferramentas diferentes do compilador, como MSBuild, depende do tipo de projeto que você tem e qual versão do MSBuild você está usando.

Com o MSBuild 16.8 e posterior, em projetos que usam um SDK ou as importações padrão, você pode suprimir avisos de ferramenta usando os mesmos métodos descritos anteriormente. Você deve especificar o código de erro completo (incluindo o prefixo, como MSB para MSBuild), não apenas um número, como você pode com um aviso do compilador. Além disso, a mensagem não é eliminada; ela ainda aparece como uma mensagem informativa, mas foi rebaixada de um aviso.

Com o MSBuild 16.7 e versões anteriores, e em qualquer projeto que não use um SDK ou as importações padrão, esses avisos não são suprimidos usando NoWarn. Nesses casos, a propriedade que o utilizador pode usar para suprimir avisos de ferramentas é MSBuildWarningsAsMessages. Você pode suprimir avisos de compilação editando o arquivo de projeto ou especificando a opção MSBuildWarningsAsMessages na linha de comando do MSBuild. Quando você usa MSBuildWarningsAsMessages, use o código de erro MSBuild completo, incluindo o prefixo MSB.

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

Observe que alguns avisos do MSBuild não podem ser suprimidos definindo MSBuildWarningsAsMessages. Para desativá-los, use a opção de linha de comando warnAsMessage.

Além disso, alguns avisos têm propriedades específicas que você pode definir para desativar o aviso. Por exemplo, MSB3253 é desativado ao definir a propriedade:

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

Quando possível, use a propriedade mais explícita, porque um código de erro por si só não é tão facilmente compreendido. A página de referência de erro para o código geralmente contém a propriedade que é usada para desativá-lo.

Suprimir advertências para pacotes NuGet

Em alguns casos, talvez você queira suprimir avisos do compilador NuGet para um único pacote NuGet, em vez de para um projeto inteiro. O aviso serve a um propósito, então você não quer suprimi-lo no nível do projeto. Por exemplo, um dos avisos do NuGet informa que o pacote pode não ser totalmente compatível com seu projeto. Se você suprimi-lo no nível do projeto e depois adicionar um pacote NuGet adicional, você nunca saberia se ele estava produzindo o aviso de compatibilidade.

Para suprimir um aviso específico para um único pacote NuGet

  1. No Gerenciador de Soluções , selecione o pacote NuGet para o qual você deseja suprimir os avisos do compilador.

    Captura de tela do pacote NuGet no Gerenciador de Soluções.

  2. No menu de contexto, ou clicando no botão direito do mouse, selecione Propriedades.

  3. Na caixa Suprimir avisos das propriedades do pacote, insira o número de aviso que deseja suprimir para este pacote. Se quiser suprimir mais de um aviso, use uma vírgula para separar os números de aviso.

    Captura de tela das propriedades do pacote NuGet

    O aviso desaparece do Gerenciador de Soluções e da Lista de Erros . No arquivo de projeto, a propriedade NoWarn é definida.

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

Suprimir avisos de análise de código

As mensagens de diagnóstico com códigos que começam com CA são violações e avisos de Análise de Código, que são distintos dos avisos do compilador discutidos neste artigo. Você pode suprimir avisos de Análise de Código de várias maneiras, incluindo o uso de marcação específica do site e em todo o projeto ou globalmente, usando arquivos de configuração de regras. Veja Suprimir avisos de Análise de Código e Suprimir violações de Análise de Código.