Belirli MSBuild uyarısı nasıl bastırılır


100

MSBuild'i komut satırından çalıştırırken belirli MSBuild uyarısını (örn. MSB3253) devre dışı bırakmanın bir yolu var mı? Derleme komut dosyam msbuild.exe'yi şu şekilde çağırır:

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

Msbuild.exe için başka bir parametre kullanarak C # uyarılarını (ör. CS0618) bastırabileceğimi öğrendim:

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

Ancak bu yaklaşım MSBuild uyarıları için çalışmaz. Belki ayarlanacak başka bir sihirli özellik vardır?

.NET 3.5 ve VS2008 kullanıyorum.

Yanıtlar:


64

Uyarı seviyesini bastırmayı başardım /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


6
Evet - doğru. Bu, arabanızdaki motor problemini kontrol panelinde bant kullanarak döndürmek gibidir :-)
cacau

MSBuild 15.4.8.50001 ile denedim ve / p: WarningLevel = 0 MSBuild uyarısı MSB3227'yi BASTIRMAZ.
Düşünce

2
Ben denedim ve bu derleyici uyarıları bastırmak olacak (CS ..) ama değil uyarıları (MSB ...) MsBuild
marsze

Gerçekten ihtiyacınız varsa bu bir hack'tir, ancak bu uyarıyı bastırmak istediğiniz csproj'un yanında Directory.Build.rsp oluşturabilir ve "/ WarnAsMessage: MSBXXXX" içeriğini ekleyebilirsiniz.
mjsabby

38

MSB3253 için böyle bir uyarıya neden olan proje dosyasında (* .csproj) ayarlayabilirsiniz.

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

5
Bu cevap aynı zamanda MSB3270'i de kapsar. Platforma özel montaj yüklerini yönetmek için özel bir montaj çözümleyici kullandığınızda çok kullanışlıdır.
MOverlund

16
MS'te bir yerde bu sihirli ayarların tam bir listesi var mı?
ATV

Bunun nasıl yapılması gerektiği konusunda daha fazla ayrıntı yazabilir misiniz? hangi dosya değiştirilmeli mi? Bu MSB8012 için çalışıyor mu?
Gayane

Sadece bunu yok etmek için ... Çözüm Gezgini'nde * .csproj dosyama sağ tıkladım, "Projeyi Kaldır" a tıkladım, "Düzenle" ye sağ tıkladım. Daha sonra bu "ResolveAssembly" bölümünü sondaki ilk özellik grubuna kopyaladı (Genellikle TargetFrameworkProfile etiketinden sonra) ve bu uyarıyı durdurdu
Steven Wood

31

MSDN Forumundaki bu iş parçacığına göre MSBuild uyarıları bastırılamaz.


22
Not: Bu yanıt, OP'nin sorduğu gibi MSBuild'den ("MSB" ön ekiyle) gelen hatalar için doğrudur. Google sizi buraya getirdiyse ve derleyici hatalarını ortadan kaldırmak istiyorsanız (ör. "CS2008"), OP'nin yaptığını yapabilirsiniz: /p:nowarn=2008("CS" yi numaradan çıkarın)
Michael Haren

1
Hala durumun bu olup olmadığını biliyor musun?
Martin Ba

MSDN belgelerinde / nowarn burada . Msbuild, bu değişkeni CoreCompile hedefinin bir bölümünde csc.exe'ye aktarır.
Dav Evans

Roslyn derleyici uyarılarını hem bastırmanın hem de MS-Build'de bastırmanın bir yolu yok gibi görünüyor. '#pragma uyarı RCS1110'u devre dışı bırakma // Ad alanı içindeki türü bildirme.' RCS düştüğünde derleyici uyarısını geri getirir.
user1431356

11

Bunu şimdi Google'da araştıranlar için (benim gibi): yaklaşan MSBuild 15.0 (Visual Studio 2017 ile piyasaya sürülecek, tahmin ediyorum) nihayet belirli uyarıları bastırma seçeneğini uygulayacak/NoWarn (ayrıca /WarnAsErrorbelirli uyarıları veya tüm uyarıları hata olarak ele alma) .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.