Suprimir advertencias del compilador
Con Visual Studio, puede especificar qué advertencias desea suprimir especificando los códigos de advertencia en el Diseñador de proyectos (páginas de propiedades del proyecto). También puede suprimir advertencias estableciendo determinadas propiedades directamente en el archivo del proyecto, a través de la línea de comandos o en el código cuando desea suprimir una advertencia solo en una ubicación.
Algunos compiladores y herramientas de compilación también tienen opciones para especificar el nivel de advertencia. Esto le permite controlar categorías de advertencias con una configuración. Para estas opciones, consulte la documentación del lenguaje y el compilador específicos que usa:
Si el objetivo es ver una salida más concisa y centrada en el registro de compilación, es posible que desee cambiar el nivel de detalle del registro de compilación. La configuración disponible es Normal, Detalladoo Diagnóstico. Para obtener más información sobre el nivel de detalle, vea Cómo: Ver, guardar y configurar archivos de registro de compilación.
Cautela
Tenga en cuenta que las advertencias están pensadas para ser una indicación de un posible problema con el código, por lo que debe comprender los riesgos de deshabilitar cualquier advertencia determinada. La configuración de Visual Studio deshabilita las advertencias en el nivel de proyecto. Es posible que quiera usar un enfoque más específico para deshabilitar las advertencias que proporciona Visual Studio. La mayoría de los compiladores proporcionan formas de deshabilitar las advertencias solo para determinadas líneas de código, de modo que pueda seguir revisando las advertencias si se producen en otro lugar del mismo proyecto.
Suprimir advertencias específicas para Visual C# o F#
Use las propiedades de Compilación para suprimir advertencias específicas para un proyecto completo de C# y F#. Si desea suprimir una advertencia solo en una parte específica del código de C#, use #pragma warning. En F#, use la directiva del preprocesador #nowarn para deshabilitar una advertencia en un archivo de origen completo.
En Explorador de soluciones, elija el proyecto en el que desea suprimir las advertencias.
Haga clic con el botón derecho en el nodo del proyecto y elija Propiedades en el menú contextual. O bien, seleccione el nodo del proyecto y presione Alt+Enter.
Elija Compilar y vaya a la subsección Errores y advertencias.
En el cuadro Suprimir advertencias o Suprimir advertencias específicas, especifique los códigos de error de las advertencias que desea suprimir, separados por puntos y comas. Para obtener una lista y descripciones de códigos de advertencia, consulte Mensajes del Compilador de C#.
Recompile la solución.
En Explorador de soluciones, elija el proyecto en el que desea suprimir las advertencias.
Haga clic con el botón derecho en el nodo del proyecto y elija Propiedades en el menú contextual. O, seleccione el nodo del proyecto y presione Alt+Enter.
Elija la página o sección Build y, si está en la interfaz de usuario actual, abra la subsección Errores y advertencias.
En el cuadro Suprimir advertencias o Suprimir advertencias específicas, especifique los códigos de error de las advertencias que desea suprimir, separados por punto y coma. Para obtener una lista y descripciones de códigos de advertencia, vea Mensajes del compilador de C#.
Recompile la solución.
Nota
No se pueden suprimir algunas advertencias. Para obtener una lista de ellos, consulte la opción de compilador NoWarn .
Suprimir advertencias específicas para C++
Puede suprimir advertencias en un proyecto de C++ mediante las propiedades del proyecto; utilice la página de propiedades Propiedades de Configuración para suprimir advertencias específicas en un proyecto de C++ completo. También puede suprimir advertencias en archivos específicos mediante #pragma warning
. En este artículo se describe el control de nivel de proyecto, pero si su intención es deshabilitar una advertencia en un archivo determinado o justo alrededor de unas pocas líneas de código, pero desea seguir viendo otras apariciones de la misma advertencia, considere la posibilidad de usar #pragma warning
. Consulte advertencia #pragma.
En Explorador de soluciones, elija el proyecto o el archivo de origen en el que desea suprimir las advertencias.
En la barra de menús, elija Ver>Páginas de propiedades.
Elija la categoría Propiedades de configuración, luego elija la categoría C/C++, y a continuación, elija la página Avanzadas.
Realice uno de los pasos siguientes:
En el cuadro Deshabilitar advertencias específicas, especifique los códigos de error de las advertencias que desea suprimir, separados por punto y coma.
En el cuadro Deshabilitar advertencias específicas, elija Editar para mostrar más opciones.
Elija el botón Aceptar y, después, recompile la solución.
Si la advertencia procede de otra herramienta, consulte la documentación de la herramienta específica para averiguar cómo puede suprimir las advertencias de esa herramienta. Por ejemplo, el enlazador de C++ tiene algunas advertencias que puede deshabilitar mediante la opción del enlazador /IGNORE
. Consulte /IGNORE (Omitir advertencias específicas) y para establecer esta opción, vea /link (Pasar opciones al enlazador).
Suprimir advertencias para Visual Basic
Puede ocultar advertencias específicas del compilador para Visual Basic editando el archivo .vbproj
del proyecto. Para suprimir las advertencias por categoría, puede usar la página de propiedades de Compilación. Si desea deshabilitar una advertencia en una parte específica de un archivo de código, use directivas #Disable y #Enable. Para obtener más información, vea Configurar advertencias en Visual Basic.
Para suprimir advertencias específicas para todo un proyecto de Visual Basic
En este ejemplo se muestra cómo editar el archivo .vbproj
para suprimir advertencias específicas del compilador.
En Explorador de soluciones, elija el proyecto en el que desea suprimir las advertencias.
En la barra de menús, elija Proyecto>Descargar proyecto.
En Explorador de soluciones, abra el menú contextual o haga clic con el botón derecho en el proyecto y, a continuación, elija Editar <NombreDeProyecto>.vbproj.
El archivo de proyecto XML se abre en el editor de código.
Busque el elemento
<NoWarn>
para la configuración de compilación con la que está compilando y agregue uno o varios números de advertencia como valor del elemento<NoWarn>
. Si especifica varios números de advertencia, separe con una coma.En el ejemplo siguiente se muestra el elemento
<NoWarn>
para la configuración de compilación de Depuración en una plataforma x86, con dos advertencias de compilador suprimidas:<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>
Nota
Los proyectos de .NET Core no contienen grupos de propiedades de configuración de compilación de forma predeterminada. Para suprimir advertencias en un proyecto de .NET Core, agregue la sección de configuración de compilación al archivo manualmente. Por ejemplo:
<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>
Guarde los cambios en el archivo
.vbproj
.En la barra de menús, elija Proyecto>Recargar proyecto.
En la barra de menús, elija Compilación>Recompilar solución.
La ventana Salida ya no muestra las advertencias que ha especificado.
Para obtener más información, consulte la opción del compilador /nowarn para el compilador de línea de comandos de Visual Basic.
Puede suprimir advertencias de forma individual o por categoría. La experiencia difiere en función de si está trabajando con un proyecto de .NET Framework o con un proyecto de .NET Core (o .NET 5 y versiones posteriores).
Si desea deshabilitar una advertencia en una parte específica de un archivo de código, use directivas #Disable y #Enable. Para obtener más información, vea Configurar advertencias en Visual Basic.
Proyectos de .NET 5 o posteriores
Puede editar el archivo de proyecto para suprimir advertencias específicas del compilador mediante los códigos de diagnóstico, o bien puede suprimir las advertencias por categoría mediante el Diseñador de proyectos. Para abrir el diseñador de proyectos, seleccione el nodo del proyecto, haga clic con el botón derecho y elija Propiedadeso presione Alt+Entrar.
En la sección Compilar, elija Advertencias. En Gravedad de advertencia, puede elegir Fijar gravedades de advertencia individualmente. Se muestran las categorías y tiene la opción de establecer cada categoría en Ninguno para deshabilitar la categoría de advertencia o establecerla en Advertencia o Error para habilitarla como advertencia o error.
Proyectos de .NET Framework
Puede ocultar advertencias específicas del compilador para Visual Basic editando el archivo .vbproj
del proyecto. Para suprimir las advertencias por categoría, puede usar la página de propiedades de Compilación.
Para suprimir advertencias específicas para todo un proyecto de Visual Basic
En este ejemplo se muestra cómo editar el archivo .vbproj
para suprimir advertencias específicas del compilador.
En Explorador de soluciones, elija el proyecto en el que desea suprimir las advertencias.
(.NET) Haga doble clic en el nodo del proyecto para abrir el archivo del proyecto.
(.NET Framework) En la barra de menús, elija Proyecto>Descargar proyecto. A continuación, en el Explorador de soluciones, abra el menú contextual del proyecto y luego elija Editar <ProjectName>.vbproj.
El archivo de proyecto de MSBuild se abre en el editor de código. Se trata de un archivo XML.
Busque el elemento
<NoWarn>
para la configuración de compilación con la que está compilando y agregue uno o varios números de advertencia como valor del elemento<NoWarn>
. Si especifica varios números de advertencia, separe con una coma.En el ejemplo siguiente se muestra el elemento
<NoWarn>
para la configuración de compilación Debug en una plataforma x86, con dos advertencias del compilador suprimidas.<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>
Nota
Los proyectos de .NET Core y .NET 5 y versiones posteriores no contienen grupos de propiedades de configuración de compilación de forma predeterminada. Para suprimir advertencias en un proyecto de .NET Core, agregue la sección de configuración de compilación al archivo manualmente. Por ejemplo:
<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>
Guarde los cambios en el archivo
.vbproj
.En la barra de menús, elija Proyecto>Recargar proyecto.
En la barra de menús, elija Compilación>Recompilar solución.
La ventana de salida ya no muestra las advertencias que especificó.
Para obtener más información, consulte la opción del compilador /nowarn para el compilador de línea de comandos de Visual Basic.
Suprimir una advertencia editando el archivo del proyecto
El uso del diseñador de propiedades de Visual Studio para suprimir advertencias da como resultado un cambio en el archivo de proyecto. En ocasiones, puede ser más conveniente editar manualmente el archivo del proyecto para realizar la tarea de deshabilitar una advertencia. MSBuild procesa el archivo de proyecto, el motor de compilación de Microsoft. Consulte MSBuild.
Además, en La versión 16.7 y anteriores de Visual Studio 2019, algunas advertencias de herramientas distintas del compilador no se pueden suprimir de ninguna otra manera.
Para abrir el archivo de proyecto en el editor de Visual Studio, haga clic con el botón derecho en el nodo del proyecto y elija Editar archivo de proyecto. Algunos tipos de proyecto requieren que descargue el proyecto antes de poder editar el archivo del proyecto. Si necesita descargar el proyecto, haga clic con el botón derecho en el nodo del proyecto y elija Descargar proyecto.
En una nueva sección de
PropertyGroup
, use la propiedadNoWarn
. Enumere los errores que desea suprimir, separados por comas o punto y coma. En el caso de las advertencias del compilador, puede omitir el código de lenguaje y escribir solo el número, pero para mayor claridad, se recomienda usar el código completo. Para las advertencias de otras herramientas de la compilación, especifique el código completo, incluido el prefijo (por ejemplo,MSB
para advertencias emitidas por MSBuild en sí).El código siguiente agrega advertencias CS0028 y CS0618 a la lista de advertencias suprimidas:
<PropertyGroup> // Other properties <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn> </PropertyGroup>
Al hacer referencia al valor anterior de
$(NoWarn)
como se muestra en el ejemplo anterior, se agregan esos números a cualquier valor establecido previamente paraNoWarn
, en lugar de sobrescribirlo.
Consulte NoWarn.
Suprimir una advertencia de la línea de comandos de compilación
Si va a compilar un proyecto desde la línea de comandos, también puede suprimir advertencias mediante -warnAsMessage
en la línea de comandos de MSBuild. Use comillas alrededor de listas de varios códigos de advertencia.
MSBuild.exe -warnAsMessage="CS0028;CS0618" MyProject.csproj
Consulte Referencia de línea de comandos de MSBuild.
Suprimir advertencias para todos los proyectos y soluciones de una estructura de directorios
Puede suprimir advertencias para muchos proyectos a la vez si están todos en un directorio común en el sistema de archivos mediante el archivo de MSBuild Directory.Build.props. Consulte Personalizar compilaciones por directorio. Por ejemplo, si coloca el siguiente archivo Directory.Build.props en la raíz de una carpeta con muchas soluciones y proyectos, puede suprimir una lista especificada de advertencias para todos los proyectos de esa carpeta y de forma recursiva en las carpetas que contiene.
<Project>
<PropertyGroup>
<NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
</PropertyGroup>
</Project>
Suprimir mensajes de advertencia de la herramienta
La forma de suprimir advertencias de herramientas distintas del compilador, como MSBuild, depende del tipo de proyecto que tenga y de la versión de MSBuild que use.
Con MSBuild 16.8 y versiones posteriores, en proyectos que usan un SDK o las importaciones estándar, puede suprimir advertencias de herramientas mediante los mismos métodos descritos anteriormente. Debe especificar el código de error completo (incluido el prefijo como MSB
para MSBuild), y no solo un número, como se puede hacer con una advertencia de compilador. Además, el mensaje no se elimina; todavía se muestra como un mensaje informativo, pero se ha bajado de categoría de una advertencia.
Con MSBuild 16.7 y versiones anteriores, y en cualquier proyecto que no use un SDK ni las importaciones estándar, esas advertencias no se suprimen mediante NoWarn
. En tales casos, la propiedad que puede usar para suprimir advertencias de herramientas es MSBuildWarningsAsMessages
. Puede suprimir las advertencias de compilación editando el archivo del proyecto o especificando la opción MSBuildWarningsAsMessages
en la línea de comandos de MSBuild. Cuando use MSBuildWarningsAsMessages
, use el código de error completo de MSBuild, incluido el prefijo MSB
.
<PropertyGroup>
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3270</MSBuildWarningsAsMessages>
</PropertyGroup>
Tenga en cuenta que algunas advertencias de MSBuild no se pueden suprimir estableciendo MSBuildWarningsAsMessages
. Para deshabilitarlos, use la opción de línea de comandos warnAsMessage
.
Además, algunas advertencias tienen propiedades específicas que puede establecer para deshabilitar la advertencia. Por ejemplo, MSB3253
está deshabilitado estableciendo la propiedad :
<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
None
</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
Cuando sea posible, use la propiedad más explícita, ya que un código de error por sí mismo no se entiende tan fácilmente. La página de referencia de error del código normalmente contiene la propiedad que se usa para deshabilitarlo.
Suprimir advertencias para paquetes NuGet
En algunos casos, es posible que quiera suprimir las advertencias del compilador de NuGet para un único paquete NuGet, en lugar de para todo un proyecto. La advertencia sirve para un propósito determinado, por lo que no es necesario que la suprima a nivel de proyecto. Por ejemplo, una de las advertencias de NuGet indica que es posible que el paquete no sea totalmente compatible con el proyecto. Si lo suprime en el nivel de proyecto y después agrega un paquete NuGet adicional, nunca sabría si generase la advertencia de compatibilidad.
Para suprimir una advertencia específica para un único paquete NuGet
En Explorador de soluciones, seleccione el paquete NuGet para el que desea suprimir las advertencias del compilador.
En el menú contextual que se abre al hacer clic con el botón derecho, seleccione Propiedades.
En el recuadro de Suprimir avisos dentro de las propiedades del paquete, introduzca el número de aviso que desea suprimir para este paquete. Si desea suprimir más de una advertencia, use una coma para separar los números de advertencia.
La advertencia desaparece del Explorador de soluciones y de la lista de errores . En el archivo del proyecto, se establece la propiedad 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>
Suprimir advertencias de análisis de código
Los mensajes de diagnóstico con códigos que comienzan con CA
son infracciones y advertencias de análisis de código, que son distintas de las advertencias del compilador que se describen en este artículo. Puede suprimir las advertencias de análisis de código de varias maneras, incluido el uso de marcado específico del sitio, a nivel de todo el proyecto o globalmente, mediante archivos de configuración de reglas. Consulte Suprimir advertencias de Code Analysis y Suprimir infracciones de Code Analysis.
Contenido relacionado
- Tutorial: Compilación de una aplicación
- Cómo: Ver, guardar y configurar archivos de registro de compilación
- Compilar y construir
- Code Analysis
- opciones del compilador de C# para notificar errores y advertencias
- Configuración de advertencias en Visual Basic
- errores y advertencias del compilador de C++