c# - 使用 "Treat warnings as errors"时忽略生成的文件

标签 c# visual-studio visual-studio-2010 msbuild

我们已经开始了一个新项目,但现有项目也有这个问题。问题是,当我们用警告级别 4 编译时,我们也想打开

'将所有警告视为错误'

我们目前无法执行此操作,因为生成的文件(特别是 reference.cs 文件)缺少诸如 XML 注释之类的内容,这会生成警告,我们不想完全禁止所有文件中的 xml 注释警告仅针对特定类型的文件(即生成的代码)。

我已经想到了一种可以实现的方法,但我不确定这些是否是最好的方法,或者确实是从哪里开始 :) 我的想法是,我们需要为代码做一些 T4 模板生成,以便它确实为生成的代码填充 XML 文档。

有没有人有任何想法,目前我收到了超过 2k 个警告(这是一个大项目):(

最佳答案

您可以使用编译指示选择性地禁用警告:

// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )

如果您可以在生成的代码文件中发出此类警告(或#include),那么您就完成了。

或者,您可以在编译器的命令行上全局禁用它们:

/wd4326 disables compiler warning C4326.

然后在您想要它们的文件中重新启用它们(通过头文件):

// Report warning 4326 as an error.
#pragma warning( error : 326 )

最后,您可以通过更改项目文件中的属性为每个源文件设置不同的编译选项。我个人认为这是一场维护噩梦,但有时您别无选择。

编辑:我看到您的源文件是 C#,而不是 C++。

使用 C# 命令行:

to suppress CS0028, you could specify /nowarn:28.

不幸的是,/warnaserror 会导致所有 警告错误。

关于c# - 使用 "Treat warnings as errors"时忽略生成的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2743282/

相关文章:

c# - 无法发送表单的 POST 数据

visual-studio - 我应该将引用的 DLL 二进制文件存储在我的 Visual Studio 解决方案中的什么位置

visual-studio - Visual Studio 的/实验 :module conflicting with Vulkan's core. h 导致语法错误 - 编译失败

c++ - 如何在 VS2012 中将类添加到 openframeworks 项目

c# - 检查另一个表单中的线程是否仍在运行

c# - 当 C# 编译器是用 C# 编写的时,是否可以修改它?

c# - MATLAB 求解 C = A\B 的 MathNet 等价物是什么

javascript - 如何创建在 Angular promise 中捕获的错误

visual-studio - 未找到 : SignTool. exe 签名时发生错误

mysql - 可以直接从 Entity Framework Designer 查询 SQL Server 吗?