.net 生成的代码(xsd.exe)的SuppressMessage编译器警告CS1591

wi3ka0sx  于 2022-12-01  发布在  .NET
关注(0)|答案(1)|浏览(108)

我在几个项目中使用工具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")]

但这种压制却被忽视了。
有人有什么想法吗?

zc0qhyus

zc0qhyus1#

我找到了一个解决方案,而不必操作生成的源文件。

可以将.editorconfig放置在生成的源文件的目录中。文件中包含的规则仅应用于此目录及其后代。

1.在仅包含生成的源文件的单独目录中输出生成的代码
1.将.editorconfig添加到目录中
1.根据需要在.editorconfig中配置消息严重性
在我的例子中,这看起来如下
目录结构

\Configuration
  \Schema
    \.editorconfig  # applied to code files in this directory only
    \schema.xsd     # template for xsd.exe
    \schema.cs      # generated by xsd.exe
Project.csproj
Code.cs

.editorconfig的含量

# message severity for generated code files
[*.cs]
dotnet_diagnostic.CS1591.severity = none

如果我直接在obj/文件夹中生成代码,并将其命名为schema.g.cs,可能效果会更好。但我希望将生成的文件保存在仓库中。这可能会在以后更改。

相关问题