Cách ngăn chặn cảnh báo MSBuild cụ thể


97

Có cách nào để tắt cảnh báo MSBuild cụ thể (ví dụ: MSB3253) khi chạy MSBuild từ dòng lệnh không? Tập lệnh xây dựng của tôi gọi msbuild.exe theo cách sau:

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

Tôi đã phát hiện ra rằng tôi có thể chặn cảnh báo C # (ví dụ: CS0618) bằng cách sử dụng một tham số khác cho msbuild.exe:

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

Tuy nhiên, cách tiếp cận này không hoạt động đối với các cảnh báo MSBuild. Có thể có một tài sản ma thuật khác để thiết lập?

Tôi đang sử dụng .NET 3.5 và VS2008.

Câu trả lời:


61

Tôi đã quản lý để áp mức cảnh báo với /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
Tôi không nghĩ rằng điều này hoạt động nếu bạn đã định cấu hình mức cảnh báo cho từng dự án trong giải pháp lớn hơn 0.
si618

6
Đúng - đúng. Đó là như biến của vấn đề động cơ trong xe của bạn bằng cách sử dụng băng trên bảng điều khiển :-)
Cacau

Chỉ cần thử nó với MSBuild 15.4.8.50001 và / p: WarningLevel = 0 KHÔNG ngăn cảnh báo MSBuild MSB3227.
Tưởng

2
Tôi đã thử nó và điều này sẽ ngăn chặn cảnh báo trình biên dịch (CS ..) chứ không phải cảnh báo MSBuild (MSB ...)
marsze

Đây là một cuộc tấn công nếu bạn thực sự cần nó, nhưng bạn có thể tạo một Directory.Build.rsp bên cạnh csproj mà bạn muốn ngăn chặn cảnh báo này và thêm nội dung "/ WarnAsMessage: MSBXXXX".
mjsabby

37

Đối với MSB3253, bạn chỉ có thể đặt trong tệp dự án (* .csproj) gây ra cảnh báo như vậy.

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

5
Câu trả lời này cũng bao gồm MSB3270. Rất tiện dụng khi bạn đang sử dụng trình phân giải lắp ráp tùy chỉnh để quản lý tải lắp ráp cụ thể của nền tảng.
MOverlund

16
Có một danh sách đầy đủ về những cài đặt ma thuật này ở đâu đó tại MS ..?
ATV

Bạn có thể vui lòng viết thêm chi tiết làm thế nào điều này nên được thực hiện? tập tin nào? nên được sửa đổi? Điều này có làm việc cho MSB8012?
Gayane

Chỉ để giải quyết vấn đề này ... Tôi đã nhấp chuột phải vào tệp * .csproj của mình trong Solution Explorer, Nhấp vào "Dỡ dự án", Nhấp chuột phải vào "Chỉnh sửa". Sau đó, sao chép phần "ResolveAssembly" này vào nhóm thuộc tính đầu tiên ở cuối (Thường sau thẻ TargetFrameworkProfile) và nó sẽ dừng cảnh báo này
Steven Wood

31

Theo chủ đề này trong Diễn đàn MSDN, cảnh báo MSBuild không thể bị dập tắt.


21
Lưu ý: câu trả lời này đúng cho các lỗi từ MSBuild (tiền tố là "MSB"), như OP đã hỏi. Nếu Google đưa bạn đến đây và bạn muốn loại bỏ lỗi trình biên dịch (ví dụ: "CS2008"), bạn có thể làm những gì OP đã làm: /p:nowarn=2008(loại bỏ "CS" khỏi số)
Michael Haren

1
Bạn có tình cờ biết nếu vẫn còn trường hợp này?
Martin Ba

Tài liệu MSDN trên / bây giờ tìm hiểu tại đây . Msbuild chuyển biến này xuống csc.exe tại một phần của đích CoreCompile.
Dav Evans

Dường như không có cách nào để vừa ngăn chặn cảnh báo trình biên dịch roslyn vừa ngăn chặn chúng trong MS-Build. '#pragma cảnh báo vô hiệu hóa RCS1110 // Khai báo loại bên trong không gian tên.' với RCS bị loại bỏ sẽ đưa cảnh báo trình biên dịch trở lại.
user1431356

11

Đối với những người đang sử dụng Google hiện nay (như tôi): MSBuild 15.0 sắp tới (sẽ được phát hành cùng với Visual Studio 2017, tôi cho là) ​​cuối cùng sẽ triển khai /NoWarntùy chọn để chặn các cảnh báo cụ thể (cũng như /WarnAsErrorđể coi các cảnh báo cụ thể hoặc tất cả các cảnh báo là lỗi) .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.