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.