Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 MSBuild 编译项目时阻止输出所有的警告信息

在 MSBuild 编译项目时阻止输出所有的警告信息

作者头像
walterlv
发布于 2020-02-10 06:53:03
发布于 2020-02-10 06:53:03
1.9K0
举报

大型旧项目可能存在大量的 Warning,在编译之后 Visual Studio 会给出大量的警告。Visual Studio 中可以直接点掉警告,然而如果是通过命令行 msbuild 编译的,那如何不要让警告输出呢?


在使用 msbuild 命令编译项目的时候,如果存在大量的警告,输出量会非常多。如果我们使用 msbuild 命令编译来定位项目的编译错误,那么这些警告将会导致我们准确查找错误的效率明显降低。

当然,这种问题的首选解决方案是 —— 真的修复掉这些警告!!!

那么可以用什么方式临时关闭 msbuild 命令编译时的警告呢?可以输入如下命令:

代码语言:javascript
AI代码解释
复制
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 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-02-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
.NET/C# 项目如何优雅地设置条件编译符号?
条件编译符号指的是 Conditional Compilation Symbols。你可以在 Visual Studio 的项目属性中设置,也可以直接在项目文件中写入 DefineConstants 属性。
walterlv
2023/10/22
8230
.NET/C# 项目如何优雅地设置条件编译符号?
msbuild 自定义日志输出
visual studio 2013 - How to have MSBuild quiet output but with error/warning summary - Stack Overflow
jgrass
2024/12/25
2530
msbuild 自定义日志输出
如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target(附各种自带的 Task)
发布于 2018-05-20 11:00 更新于 2018-07-11 02:44
walterlv
2018/09/18
1.1K0
如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target(附各种自带的 Task)
三种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用
当 A 项目引用 B 项目,那么使用 Visual Studio 或者 MSBuild 编译 A 项目之前就会确保 B 项目已经编译完毕。通常我们指定这种引用是因为 A 项目确实在运行期间需要 B 项目生成的程序集。
walterlv
2023/10/22
1.1K0
三种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用
为 NuGet 指定检测的 MSBuild 路径或版本,解决 MSBuild auto-detection: using msbuild version 自动查找路径不合适的问题
使用 nuget restore 命令还原项目的 NuGet 包的时候,NuGet 会尝试自动检测计算机上已经安装的 MSBuild。不过,如果你同时安装了 Visual Studio 2017 和 Visual Studio 2019,那么 NuGet 有可能找到错误版本的 MSBuild。
walterlv
2023/10/22
1K0
为 NuGet 指定检测的 MSBuild 路径或版本,解决 MSBuild auto-detection: using msbuild version 自动查找路径不合适的问题
如何在 MSBuild Target(Exec)中报告编译错误和编译警告
发布于 2018-06-20 05:17 更新于 2018-07-02 12:49
walterlv
2018/09/18
9410
如何在 MSBuild Target(Exec)中报告编译错误和编译警告
nuget.exe 还原解决方案 NuGet 包的时候出现错误:调用的目标发生了异常。Error parsing the nested project section in solution file
我这里使用 Visual Studio 2019 能好好编译的一个项目,发现在另一个小伙伴那里却编译不通过,是在 NuGet 还原那里报告了错误:
walterlv
2023/10/22
7360
MSBuild 中的特殊字符($ @ % 等):含义、用法以及转义
在 MSBuild 中有一些特殊字符,如 $ @ % ' 等,本文介绍他们的含义,如何使用他们,以及你真的需要这些字符的时候如何编写他们。
walterlv
2023/10/22
1.2K0
理解 C# 项目 csproj 文件格式的本质和编译流程
发布于 2018-05-10 00:13 更新于 2018-08-12 08:11
walterlv
2018/09/18
3.2K0
理解 C# 项目 csproj 文件格式的本质和编译流程
在编译期间使用 Roslyn/MSBuild 自带的方法/函数判断、计算和修改属性
充分利用 MSBuild 自带的方法,可以在编译期间完成大多数常见的属性转换,而不再需要自己专门写库来完成。
walterlv
2023/10/22
3540
通过重写预定义的 Target 来扩展 MSBuild / Visual Studio 的编译过程
MSBuild 的编译过程提供了一些可以被重写的 Target,通过重写这些 Target 可以扩展 MSBuild 的编译过程。
walterlv
2020/02/10
1.2K0
Write a MSBuild Target to detect whether the project is rebuilding or not
MSBuild or the dotnet build command both supports Incremental Building for compiling performance. You can read How to: Build Incrementally - Visual Studio - Microsoft Docs to lean more about incremental building. When a target supports increment building and the project is rebuilding for the moment, the Target will not execute. So if it affects followed other Targets, it cannot be set to incremental building.
walterlv
2020/02/10
9590
让 MSBuild Target 支持 Clean
我们有时候会使用解决方案的清理(Clean)功能来解决一些项目编译过程中非常诡异的问题。这通常是一些 Target 生成了一些错误的中间文件,但又不知道到底是哪里错了。
walterlv
2020/02/10
8400
编写 Target 检测 MSBuild / dotnet build 此次编译是否是差量编译
MSBuild 或 Roslyn 编译项目时均支持差量编译,毕竟为了性能。我在 每次都要重新编译?太慢!让跨平台的 MSBuild/dotnet build 的 Target 支持差量编译 一文中介绍了如何使一个 Target 支持差量编译。在那篇文章中我说到差量编译会导致 Target 不执行;也就是说,如果一个 Target 对后续的编译会产生影响,那么一定不能设置为差量编译。
walterlv
2020/02/10
7710
使用 MSBuild 响应文件 (rsp) 来指定 dotnet build 命令行编译时的大量参数
发布于 2018-04-03 11:51 更新于 2018-09-01 00:12
walterlv
2018/09/18
1.9K0
各个 C# 版本的主要特性、发布日期和发布方式(C# 1.0 - 7.3)
2018-10-15 07:00
walterlv
2020/02/10
1.2K0
删删删!快速将旧版 .NET Framework 的 WPF / Windows Forms 项目格式(csproj) 迁移成新版 SDK 风格的项目格式
现在再使用 Visual Studio 创建新的 WPF 项目时,将默认引诱你使用 .NET 6(或者 5、.NET Core 3.1)框架和配套的新的 SDK 风格的项目文件(csproj)。
walterlv
2023/10/23
1.1K0
删删删!快速将旧版 .NET Framework 的 WPF / Windows Forms 项目格式(csproj) 迁移成新版 SDK 风格的项目格式
MSBuild/Roslyn 和 NuGet 的 100 个坑
发布于 2018-07-04 13:29 更新于 2018-09-04 13:08
walterlv
2018/09/18
1.6K0
MSBuild/Roslyn 和 NuGet 的 100 个坑
C# 8.0 如何在项目中开启可空引用类型的支持
C# 8.0 引入了可为空引用类型和不可为空引用类型。由于这是语法级别的支持,所以比传统的契约式编程具有更强的约束力。更容易帮助我们消灭 null 异常。
walterlv
2023/10/22
8360
在项目文件 csproj 中或者 MSBuild 的 Target 中使用 % 引用集合中每一项的属性
在编写项目文件或者 MSBuild Target 文件的时候,我们经常会使用 <Foo Include="Identity" /> 来定义集合中的一项。在定义的同时,我们也会额外指定一些属性。
walterlv
2023/10/22
1.2K0
在项目文件 csproj 中或者 MSBuild 的 Target 中使用 % 引用集合中每一项的属性
推荐阅读
.NET/C# 项目如何优雅地设置条件编译符号?
8230
msbuild 自定义日志输出
2530
如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target(附各种自带的 Task)
1.1K0
三种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用
1.1K0
为 NuGet 指定检测的 MSBuild 路径或版本,解决 MSBuild auto-detection: using msbuild version 自动查找路径不合适的问题
1K0
如何在 MSBuild Target(Exec)中报告编译错误和编译警告
9410
nuget.exe 还原解决方案 NuGet 包的时候出现错误:调用的目标发生了异常。Error parsing the nested project section in solution file
7360
MSBuild 中的特殊字符($ @ % 等):含义、用法以及转义
1.2K0
理解 C# 项目 csproj 文件格式的本质和编译流程
3.2K0
在编译期间使用 Roslyn/MSBuild 自带的方法/函数判断、计算和修改属性
3540
通过重写预定义的 Target 来扩展 MSBuild / Visual Studio 的编译过程
1.2K0
Write a MSBuild Target to detect whether the project is rebuilding or not
9590
让 MSBuild Target 支持 Clean
8400
编写 Target 检测 MSBuild / dotnet build 此次编译是否是差量编译
7710
使用 MSBuild 响应文件 (rsp) 来指定 dotnet build 命令行编译时的大量参数
1.9K0
各个 C# 版本的主要特性、发布日期和发布方式(C# 1.0 - 7.3)
1.2K0
删删删!快速将旧版 .NET Framework 的 WPF / Windows Forms 项目格式(csproj) 迁移成新版 SDK 风格的项目格式
1.1K0
MSBuild/Roslyn 和 NuGet 的 100 个坑
1.6K0
C# 8.0 如何在项目中开启可空引用类型的支持
8360
在项目文件 csproj 中或者 MSBuild 的 Target 中使用 % 引用集合中每一项的属性
1.2K0
相关推荐
.NET/C# 项目如何优雅地设置条件编译符号?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档