【发布时间】:2022-11-30 04:42:30
【问题描述】:
我在几个项目中使用工具 xsd.exe 为我的数据模型生成类。
在我的 csproj 中打开文档文件生成时,编译器开始显示许多类型的警告:CS1591:Missing XML comment for publicly visible type or member 指向生成的构造函数。
由于这是一种预期的行为,我试图弄清楚如何抑制这些警告。
但仅适用于包含在单个源文件中的xsd.exe 生成的类型。
下次运行时,文件内容将被替换为xsd.exe。
对该文件的任何修改都将在该过程中丢失。
所以在文件中添加 #pragma warning disable 不是这里的解决方案
(有时我什至使用一个构建目标来重新生成构建代码)。
但是 .NET 似乎有一个针对这种情况的内置机制:SuppressMessageAttribute 在程序集级别 (Microsoft Docs: Suppress warnings)。
所以我去创建了一个文件GlobalSuppressions.cs,内容如下:
[assembly: SuppressMessage("Compiler",
"CS1591:MissingXmlCommentForPubliclyVisibleTypeOrMember",
Justification = "Generated code",
Scope = "member",
Target = "M:Company.IO.Component.Concrete.Configuration.ConfigItem.#ctor")]
但是压制被忽略了。
有人有什么想法吗?
【问题讨论】:
-
完全不清楚为什么在源文件中使用 pragma 指令抑制消息对您不起作用。
-
因为源文件是由'xsd.exe'生成的。从我的架构中重新生成源代码只会删除我之前添加到文件中的内容——正如我在问题中所写的那样(可能有点不清楚,将对其进行编辑)。
-
好吧,假设您在构建过程中自动执行了代码生成步骤。只需再添加一个步骤,获取 xsd.exe 工具的输出,添加 pragma 指令,然后重新保存文件。
-
多年来我发现,大多数时候“官方方式”更让人头疼而不是值得,这取决于“官方”是谁。
-
注意:不需要对问题进行编辑日志。编辑问题时,您可以指定编辑摘要。任何有兴趣的人都可以通过单击“x 前编辑”链接或查看时间线来查看更改内容和编辑摘要。
标签: c# .net code-analysis suppress-warnings xsd.exe