在 MSBuild 編譯項目時阻止輸出所有的警告資訊

  • 2020 年 2 月 10 日
  • 筆記

大型舊項目可能存在大量的 Warning,在編譯之後 Visual Studio 會給出大量的警告。Visual Studio 中可以直接點掉警告,然而如果是通過命令行 msbuild 編譯的,那如何不要讓警告輸出呢?


在使用 msbuild 命令編譯項目的時候,如果存在大量的警告,輸出量會非常多。如果我們使用 msbuild 命令編譯來定位項目的編譯錯誤,那麼這些警告將會導致我們準確查找錯誤的效率明顯降低。

當然,這種問題的首選解決方案是 —— 真的修復掉這些警告!!!

那麼可以用什麼方式臨時關閉 msbuild 命令編譯時的警告呢?可以輸入如下命令:

msbuild /p:WarningLevel=0

這樣在調試編譯問題的時候,因警告而造成的大量輸出資訊就會少很多。

不過需要注意的是,這種方式不會關閉所有的警告,實際上這關閉的是 csc 命令的警告(CS 開頭)。關於 csc 命令的警告可以參見:-warn (C# Compiler Options) – Microsoft Docs。於是,如果項目中存在 msbuild 的警告(MSB 開頭),此方法依然還會輸出,只不過如果是為了調試編譯問題,那麼依然會方便很多,因為 MSB 開頭的警告會少非常多。

關於警告等級:

  • 0 關閉所有的警告。
  • 1 僅顯示嚴重警告。
  • 2 顯示 1 級的警告以及某些不太嚴重的警告,例如有關隱藏類成員的警告。
  • 3 顯示級別 2 警告以及某些不太嚴重的警告,例如關於始終評估為 truefalse 的表達式的警告。
  • 4 默認值 顯示所有 3 級警告和普通訊息警告。

參考資料

本文會經常更新,請閱讀原文: https://blog.walterlv.com/post/suppress-all-w

本作品採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名 呂毅 (包含鏈接: https://blog.walterlv.com ),不得用於商業目的,基於本文修改後的作品務必以相同的許可發布。如有任何疑問,請 與我聯繫 ([email protected])