【发布时间】:2022-11-10 12:31:57
【问题描述】:
我们有大约 35 个不同的 .NET 6 项目,它们都使用相同的全局 AnalyzerConfig 文件,如下所示:
<ItemGroup>
<GlobalAnalyzerConfigFiles Include="$([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)', '.analyzerconfig'))" />
</ItemGroup>
.analyzerconfig 文件为分析器指定了一系列规则和严重性级别:
is_global = true
dotnet_sort_system_directives_first = true
csharp_style_var_for_built_in_types = false : warning
dotnet_diagnostic.CA2254.severity = warning
dotnet_diagnostic.CS4014.severity = error
# ...other rules omitted for clarity
我们目前在所有 Git 存储库中复制了 .analyzerconfig 文件,随着我们配置更多规则,维护变得越来越痛苦。我正在寻找一种方法来将此文件从 NuGet 包提供给我们所有的项目。
当我们配置更多规则时,我们希望能够更改只要NuGet 项目中的 AnalyzerConfig 文件,推送新版本的包,并等待我们的机器人在一夜之间处理依赖项更新,这样我们就可以从项目中删除所有重复的 AnalyzerConfig 文件,而不必担心它们会过时。
所以理想情况下,我想:
- 在 NuGet 包中包含全局 AnalyzerConfig 文件。
- 在每个项目中安装 NuGet 包,并通过我们所有项目中的
GlobalAnalyzerConfigFiles属性指向文件(位于已安装的包中)。我不希望在我们所有的 Git 存储库中都存在全局 AnalyzerConfig 文件;将文件复制到项目目录中某处的自定义构建任务并不是我真正想要的。它应该只来自 NuGet 包,但是我不完全确定这是否可能。如果不可能,我想最好的方法是只 gitignore 每个存储库中的复制文件。
是否可以将
GlobalAnalyzerConfigFiles属性配置为指向 NuGet 包内的文件?如果是这样,我将如何实现这一目标?我搜索了文档和各种文章,但找不到任何有关如何操作的信息。
【问题讨论】: