Comment supprimer l'avertissement MSBuild spécifique


98

Existe-t-il un moyen de désactiver l'avertissement MSBuild spécifique (par exemple MSB3253) lors de l'exécution de MSBuild à partir de la ligne de commande? Mon script de construction appelle msbuild.exe de la manière suivante:

msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release

J'ai découvert que je pouvais supprimer les avertissements C # (par exemple CS0618) en utilisant un autre paramètre pour msbuild.exe:

msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release /p:NoWarn=0618

Cependant, cette approche ne fonctionne pas pour les avertissements MSBuild. Peut-être y a-t-il une autre propriété magique à définir?

J'utilise .NET 3.5 et VS2008.

Réponses:


62

J'ai réussi à supprimer le niveau d'avertissement avec /p:WarningLevel=X

msbuild.exe MySolution.sln /t:Rebuild /p:WarningLevel=0 /p:Configuration=Release
                                      ^^^^^^^^^^^^^^^^^
Warning  
Level    Meaning
-------- -------------------------------------------
      0  Turns off emission of all warning messages.

      1  Displays severe warning messages

      2  Displays level 1 warnings plus certain, less-severe warnings, such
         as warnings about hiding class members

      3  Displays level 2 warnings plus certain, less-severe warnings, such 
         as warnings about expressions that always evaluate to true or false

      4  (the default) Displays all level 3 warnings plus informational warnings

2
Je ne pense pas que cela fonctionne si vous avez configuré le niveau d'avertissement pour chaque projet de la solution pour être supérieur à 0.
— si618

6
Oui en effet. C'est comme résoudre le problème du moteur de votre voiture en utilisant du ruban adhésif sur le tableau de bord :-)
— cacau

Je viens de l'essayer avec MSBuild 15.4.8.50001, et / p: WarningLevel = 0 ne supprime PAS l'avertissement MSBuild MSB3227.
— Pensé le

2
Je l'ai essayé et cela supprimera les avertissements du compilateur (CS ..) mais pas les avertissements MSBuild (MSB ...)
— marsze

C'est un hack si vous en avez vraiment besoin, mais vous pouvez créer un Directory.Build.rsp adjacent au csproj dans lequel vous souhaitez supprimer cet avertissement et ajouter le contenu "/ WarnAsMessage: MSBXXXX".
— mjsabpar

38

Pour MSB3253, vous pouvez simplement définir dans le fichier projet (* .csproj) qui provoque un tel avertissement.

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <!-- some code goes here -->
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
        None
    </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    <!-- some code goes here -->
  </PropertyGroup>

5
Cette réponse couvre également MSB3270. Très pratique lorsque vous utilisez un résolveur d'assemblage personnalisé pour gérer les charges d'assemblage spécifiques à la plate-forme.
— MOverlund

16
Existe-t-il une liste complète de ces paramètres magiques quelque part chez MS ..?
— ATV

Pourriez-vous s'il vous plaît écrire plus de détails sur la façon dont cela devrait être fait? quel fichier? doit être modifié? Cela fonctionne-t-il pour MSB8012?
— Gayane

Juste pour necro ceci ... J'ai cliqué avec le bouton droit sur mon fichier * .csproj dans l'Explorateur de solutions, cliqué sur "Décharger le projet", cliqué droit sur "Modifier". Puis copié cette section «ResolveAssembly» dans le premier groupe de propriétés à la fin (généralement après la balise TargetFrameworkProfile) et il arrête cet avertissement
— Steven Wood

31

D'après ce fil du forum MSDN, les avertissements MSBuild ne peuvent pas être supprimés.


21
Remarque: cette réponse est correcte pour les erreurs de MSBuild (préfixées par "MSB"), comme OP l'a demandé. Si Google vous a amené ici et que vous souhaitez supprimer les erreurs du compilateur (par exemple "CS2008"), vous pouvez faire ce que OP a fait: /p:nowarn=2008(enlever le "CS" du numéro)
— Michael Haren

1
Savez-vous si c'est toujours le cas?
— Martin Ba

Documents MSDN sur / nowarn ici . Msbuild transmet cette variable à csc.exe dans une partie de sa cible CoreCompile.
— Dav Evans

Il ne semble pas y avoir de moyen à la fois de supprimer les avertissements du compilateur Roslyn et de les supprimer dans MS-Build. '#pragma warning disable RCS1110 // Declare type inside namespace.' avec RCS abandonné ramène l'avertissement du compilateur.
— user1431356

11

Pour ceux qui recherchent ceci maintenant (comme moi): le prochain MSBuild 15.0 (à paraître avec Visual Studio 2017, je présume) implémentera/NoWarn enfin l' option permettant de supprimer les avertissements spécifiques (ainsi que /WarnAsErrorde traiter les avertissements spécifiques ou tous les avertissements comme des erreurs) .


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.