使用"将警告视为错误"时忽略生成的文件

kry*_*our 12 c# msbuild visual-studio-2010 visual-studio

我们已经开始了一个新项目,但对于现有项目也存在这个问题.问题是当我们编译警告级别为4时,我们也想要打开

'将所有警告视为错误'

我们暂时无法执行此操作,因为生成的文件(特别是reference.cs文件)缺少XML注释之类的内容,这会产生警告,我们不希望完全取消所有文件中的xml注释警告文件类型(即生成的代码).

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

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

egr*_*nin 6

您可以使用pragma选择性地禁用警告:

// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )
Run Code Online (Sandbox Code Playgroud)

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

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

/wd4326 disables compiler warning C4326.
Run Code Online (Sandbox Code Playgroud)

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

// Report warning 4326 as an error.
#pragma warning( error : 326 )
Run Code Online (Sandbox Code Playgroud)

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

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

使用C#命令行:

to suppress CS0028, you could specify /nowarn:28.
Run Code Online (Sandbox Code Playgroud)

不幸的是,/warnaserror所有的警告错误.


Mik*_*ill 4

我编写了一个 PowerShell 脚本,该脚本调用 svcutil,然后使用 #pragma 指令包装自动生成的代码以忽略丢失的 xml,但仍然允许我根据需要重新生成。

\n\n
$outFile = 'generatedCode_fromSVCUTIL.cs'\nsvcutil '..\\XML Schema\\myXsd.xsd' /dataContractOnly /n:'*,MyNamespace.GeneratedCode' /language:C#  /importxmltypes /out:$outFile\n\n# ----------------------------------------------------- \n# Exempt this file from XML documentation requirements\n\nWrite-Host 'Wrapping ', $outFile, ' in #pragma 1591 flags' \n$a = Get-Content $outFile \n\n# Set up pragma lines for enabling and disabling the XML doc warning\n$disableWarning = '#pragma warning disable 1591'\n$restoreWarning = '#pragma warning restore 1591'\n\n# wrap the generated code in the pragma tags\nSet-Content $outFile \xe2\x80\x93value $disableWarning, $a, $restoreWarning \nWrite-Host 'Done.' \n
Run Code Online (Sandbox Code Playgroud)\n