Supprimer les avertissements du compilateur

Avec Visual Studio, vous pouvez spécifier les avertissements que vous souhaitez supprimer en spécifiant les codes d’avertissement dans le Concepteur de projets (pages de propriétés de projet). Vous pouvez également supprimer des avertissements en définissant certaines propriétés directement dans le fichier projet, via la ligne de commande ou dans le code lorsque vous souhaitez supprimer un avertissement dans un seul emplacement.

Certains compilateurs et outils de génération ont également des options pour spécifier le niveau d’avertissement. Cela vous permet de contrôler les catégories d’avertissements avec un seul paramètre. Pour ces options, consultez la documentation relative au langage et au compilateur spécifiques que vous utilisez :

Si votre objectif est de voir une sortie plus concise et plus ciblée dans votre journal de build, vous pouvez modifier le détail du journal de génération. Les paramètres disponibles sont normal, détaillé ou diagnostic. Pour plus d’informations sur le niveau de détail, consultez Guide pratique pour afficher, enregistrer et configurer des fichiers journaux de génération.

Attention

Notez que les avertissements sont destinés à être une indication d’un problème potentiel avec votre code. Vous devez donc comprendre les risques de désactivation d’un avertissement particulier. Les paramètres de Visual Studio désactivent les avertissements au niveau du projet. Vous pouvez utiliser une approche plus ciblée pour désactiver les avertissements que Visual Studio fournit. La plupart des compilateurs fournissent des moyens de désactiver les avertissements uniquement pour certaines lignes de code, afin que vous puissiez toujours passer en revue les avertissements s’ils se produisent ailleurs dans le même projet.

Supprimer des avertissements spécifiques pour Visual C# ou F#

Utilisez les propriétés Générer pour supprimer des avertissements spécifiques pour l’ensemble d’un projet C# et F#. Si vous souhaitez supprimer un avertissement uniquement dans une partie spécifique du code en C#, utilisez #pragma avertissement. Pour F#, utilisez #nowarn directive de préprocesseur pour désactiver un avertissement pour un fichier source entier.

  1. Dans l’Explorateur de solutions, choisissez le projet dans lequel vous souhaitez supprimer les avertissements.

  2. Cliquez avec le bouton droit sur le nœud du projet, puis choisissez Propriétés dans le menu contextuel. Vous pouvez également sélectionner le nœud de projet et appuyer sur Alt+Entrée.

  3. Choisissez Générer, puis accédez à la sous-section Erreurs et avertissements.

  4. Dans la zone Supprimer les avertissements ou Supprimer des avertissements spécifiques, spécifiez les codes d’erreur des avertissements que vous souhaitez supprimer, séparés par des points-virgules. Pour obtenir la liste et la description des codes d’avertissement, consultez Messages du compilateur C#.

  5. Régénérez la solution.

  1. Dans l’Explorateur de solutions, choisissez le projet dans lequel vous souhaitez supprimer les avertissements.

  2. Cliquez avec le bouton droit sur le nœud du projet, puis choisissez Propriétés dans le menu contextuel. Vous pouvez également sélectionner le nœud de projet et appuyer sur Alt+Entrée.

  3. Choisissez la page ou la section Générer et, si vous êtes dans l’interface utilisateur actuelle, ouvrez la sous-section Erreurs et avertissements.

  4. Dans la zone Supprimer les avertissements ou Supprimer des avertissements spécifiques, spécifiez les codes d’erreur des avertissements que vous souhaitez supprimer, séparés par des points-virgules. Pour obtenir la liste et la description des codes d’avertissement, consultez Messages du compilateur C#.

  5. Régénérez la solution.

Notes

Certains avertissements ne peuvent pas être supprimés. Pour en obtenir la liste, consultez Option du compilateur NoWarn.

Supprimer les avertissements pour C++

Vous pouvez supprimer des avertissements dans un projet C++ à l’aide des propriétés du projet ; vous utilisez les propriétés de configuration page de propriétés pour supprimer des avertissements spécifiques pour l’ensemble d’un projet C++. Vous pouvez également supprimer des avertissements dans des fichiers spécifiques à l’aide de #pragma warning. Cet article traite du contrôle au niveau du projet, mais si votre intention est de désactiver un avertissement dans un fichier particulier ou juste autour de quelques lignes de code, mais que vous souhaitez continuer à voir d’autres occurrences du même avertissement, vous devez envisager d’utiliser #pragma warning. Consultez #pragma avertissement.

  1. Dans l’Explorateur de solutions, choisissez le projet ou fichier source dans lequel vous souhaitez supprimer les avertissements.

  2. Dans la barre de menus, sélectionnez Afficher>Pages de propriétés.

  3. Choisissez la catégorie Propriétés de configuration, la catégorie C/C++, puis la page Avancé.

  4. Effectuez l’une des opérations suivantes :

    • Dans la zone Désactivation des avertissements spécifiques, spécifiez les codes d’erreur des avertissements que vous souhaitez supprimer, séparés par des points-virgules.

    • Dans la zone Désactivation des avertissements spécifiques, choisissez Edition pour afficher davantage d’options.

  5. Choisissez le bouton OK, puis régénérez la solution.

Si l’avertissement provient d’un autre outil, reportez-vous à la documentation de l’outil spécifique pour savoir comment supprimer les avertissements de cet outil. Par exemple, l’éditeur de liens C++ contient des avertissements que vous pouvez désactiver à l’aide de l’option éditeur de liens /IGNORE. Consultez /IGNORE (Ignorer les avertissements spécifiques) et pour définir cette option, consultez /link (Transmettre des options à l'éditeur de liens).

Supprimer des avertissements pour Visual Basic

Vous pouvez masquer des avertissements spécifiques du compilateur pour Visual Basic en modifiant le fichier .vbproj du projet. Pour supprimer des avertissements par catégorie, vous pouvez utiliser la page de propriétés Compiler. Si vous souhaitez désactiver un avertissement dans une partie spécifique d’un fichier de code, utilisez des directives #Désactiver et #Activer. Pour plus d’informations, consultez Configurer des avertissements dans Visual Basic.

Pour supprimer des avertissements spécifiques pour un projet Visual Basic entier

Cet exemple montre comment modifier le fichier .vbproj pour supprimer des avertissements spécifiques du compilateur.

  1. Dans l’Explorateur de solutions, choisissez le projet dans lequel vous souhaitez supprimer les avertissements.

  2. Dans la barre de menus, sélectionnez Projet>Décharger le projet.

  3. Dans l’Explorateur de solutions, ouvrez le menu contextuel (clic droit) du projet, puis sélectionnez Modifier<nom_projet>.vbproj.

    Le fichier de projet XML s’ouvre dans l’éditeur de code.

  4. Recherchez l’élément <NoWarn> pour la configuration de build utilisée pour la génération, et ajoutez un ou plusieurs numéros d’avertissement comme valeur de l’élément <NoWarn>. Si vous spécifiez plusieurs numéros d’avertissement, séparez-les par des virgules.

    L’exemple suivant montre l’élément <NoWarn> en gras pour la configuration de build Debug sur une plateforme x86, avec deux avertissements du compilateur supprimés :

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

    Notes

    Les projets .NET Core ne contiennent pas de groupes de propriétés de configuration de build par défaut. Pour supprimer des avertissements d’un projet .NET Core, ajoutez manuellement la section de configuration de build au fichier. Par exemple :

    <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. Enregistrez les modifications apportées au fichier .vbproj.

  6. Dans la barre de menus, sélectionnez Projet>Recharger le projet.

  7. Dans la barre de menus, sélectionnez Générer>Régénérer la solution.

    La fenêtre Sortie n’affiche plus les avertissements que vous avez spécifiés.

Pour plus d’informations, consultez l’option du compilateur /nowarn pour le compilateur de ligne de commande Visual Basic.

Supprimer un avertissement en modifiant le fichier projet

L’utilisation du concepteur de propriétés Visual Studio pour supprimer les avertissements entraîne une modification du fichier projet. Parfois, il peut être plus pratique de modifier manuellement le fichier projet pour accomplir la tâche de désactivation d’un avertissement. Le fichier projet est traité par MSBuild, le moteur de build de Microsoft. Consultez msBuild.

En outre, dans Visual Studio 2019 version 16.7 et antérieures, certains avertissements provenant d’outils autres que le compilateur ne peuvent pas être supprimés d’une autre manière.

  1. Pour ouvrir le fichier projet dans l’éditeur Visual Studio, cliquez avec le bouton droit sur le nœud du projet, puis choisissez Modifier le fichier projet. Certains types de projet vous obligent à décharger le projet avant de pouvoir modifier le fichier projet. Si vous devez décharger le projet, cliquez avec le bouton droit sur le nœud du projet et choisissez Décharger le projet.

  2. Dans une nouvelle section PropertyGroup, utilisez la propriété NoWarn. Répertoriez les erreurs que vous souhaitez supprimer, séparées par des virgules ou des points-virgules. Pour les avertissements du compilateur, vous pouvez omettre le code de langue et entrer uniquement le nombre, mais pour plus de clarté, nous vous recommandons d’utiliser le code complet. Pour les avertissements d’autres outils de la build, spécifiez le code complet, y compris le préfixe (par exemple, MSB pour les avertissements émis par MSBuild lui-même).

    Le code suivant ajoute des avertissements CS0028 et CS0618 à la liste des avertissements supprimés :

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

    Le référencement de la valeur précédente de $(NoWarn), comme indiqué dans l’exemple précédent, ajoute ces nombres à n’importe quelle valeur définie précédemment pour NoWarn, plutôt que de l’écraser.

Consultez NoWarn.

Supprimer un avertissement de la ligne de commande build

Si vous créez un projet à partir de la ligne de commande, vous pouvez également supprimer des avertissements à l’aide de -warnAsMessage sur la ligne de commande MSBuild. Utilisez des guillemets autour des listes de plusieurs codes d’avertissement.

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

Consultez Informations de référence de la ligne de commande MSBuild.

Supprimer les avertissements de l’outil

La façon dont vous supprimez les avertissements des outils autres que le compilateur, tels que MSBuild, dépend du type de projet que vous avez et de la version de MSBuild que vous utilisez.

Avec MSBuild 16.8 et versions ultérieures, dans les projets qui utilisent un Kit de développement logiciel (SDK) ou les importations standard, vous pouvez supprimer les avertissements des outils à l’aide des mêmes méthodes décrites précédemment. Vous devez spécifier le code d’erreur complet (y compris le préfixe tel que MSB pour MSBuild), pas seulement un nombre que vous pouvez avec un avertissement du compilateur. En outre, le message n’est pas éliminé; il s’affiche toujours comme un message d’information, mais il a été rétrogradé d’un avertissement.

Avec MSBuild 16.7 et versions antérieures, et dans n’importe quel projet qui n’utilise pas de KIT de développement logiciel (SDK) ou les importations standard, ces avertissements ne sont pas supprimés à l’aide de NoWarn. Dans ce cas, la propriété que vous pouvez utiliser pour supprimer les avertissements des outils est MSBuildWarningsAsMessages. Vous pouvez supprimer les avertissements de build en modifiant le fichier projet ou en spécifiant l’option MSBuildWarningsAsMessages sur la ligne de commande MSBuild. Lorsque vous utilisez MSBuildWarningsAsMessages, utilisez le code d’erreur MSBuild complet, y compris le préfixe MSB.

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

Notez que certains avertissements MSBuild ne peuvent pas être supprimés en définissant MSBuildWarningsAsMessages. Pour les désactiver, utilisez l’option de ligne de commande warnAsMessage.

En outre, certains avertissements ont des propriétés spécifiques que vous pouvez définir pour désactiver l’avertissement. Par exemple, MSB3253 est désactivée en définissant la propriété :

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

Dans la mesure du possible, utilisez la propriété plus explicite, car un code d’erreur lui-même n’est pas aussi facilement compris. La page de référence d’erreur du code contient généralement la propriété utilisée pour la désactiver.

Supprimer des avertissements pour les packages NuGet

Dans certains cas, vous pouvez supprimer les avertissements du compilateur NuGet pour un seul package NuGet, au lieu d’un projet entier. L’avertissement a un objectif précis. Vous ne souhaitez donc pas le supprimer au niveau du projet. Par exemple, l’un des avertissements NuGet vous informe que le package peut ne pas être entièrement compatible avec votre projet. Si vous le supprimez au niveau du projet, puis ajoutez par la suite un autre package NuGet, vous ne saurez jamais si c’est ce dernier qui a généré l’avertissement de compatibilité.

Pour supprimer un avertissement spécifique pour un seul package NuGet

  1. Dans l’Explorateur de solutions, sélectionnez le package NuGet pour lequel vous souhaitez supprimer les avertissements du compilateur.

    Screenshot of NuGet package in Solution Explorer.

    Screenshot of NuGet package in Solution Explorer.

  2. Dans le menu contextuel (clic droit), sélectionnez Propriétés.

  3. Dans la zone Supprimer les avertissements des propriétés du package, entrez le numéro d’avertissement à supprimer pour ce package. Si vous souhaitez supprimer plusieurs avertissements, utilisez une virgule pour séparer les numéros d’avertissement.

    NuGet package properties

    Screenshot of NuGet package properties

    L’avertissement disparaît de l’Explorateur de solutions et de la liste d’erreurs. Dans le fichier projet, la propriété NoWarn est définie.

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