我正在使用VS 2019 16.8.3,我想在solution .editorconfig文件中指定一些代码分析规则(dotnet_diagnostic.CAXXXX.severity),仅适用于发布版本。
当我在.editorconfig文件中添加规则时,调试构建时间会增加几分钟。在项目属性中,所有分析器复选框都未选中为“生成时运行”。
所以我想从代码分析中排除调试构建。是否可以仅为发布版本指定.editorconfig文件?
或者是否可以在构建时禁用此.editconfig,而只应用于手动代码分析?
3条答案
按热度按时间nxagd54h1#
TLDR
您可以在
Directory.Build.props
中设置.editorconfig
文件,如下所示:深度挖掘
我们公司也有同样的问题。我们希望在调试和发布配置上为一个特定规则设置不同的严重性。我们希望这样做的原因是,当开发人员在开发环境中(在他/她的计算机中)收到警告时,在Azure DevOps环境中的项目或解决方案构建阶段,pull请求被给予错误。
顺便说一下,我们有一个名为CodingGuideline的仓库来存储我们的
.editorconfig
文件,并引用一些分析器,如StyleCop。同时,这个仓库是一个nuget包。我们所有的仓库都引用了这个包。我们有一些解决方案如下:
方案一
.editorconfig
和review.editorconfig
单独的文件。开发人员已经有了存储库目录来保存公司的存储库,每个人都手动将.editorconfig
放入这个目录中。(如果你不想手动放置配置文件,你可以尝试解决方案2)这样,整个仓库将遵循相同的代码风格和编码规则。.editorconfig
的review.editorconfig
文件。就是这样。当dotnet build命令运行时,一些定义review.editorconfig
的规则被破坏,pull request将抛出错误。方案二
development.editorconfig
和review.editorconfig
单独的文件。我们不能使用文件名.editorconfig
,因为我们不能部署具有此名称的文件。CodingGuideline.targets
(ProjectName.targets)文件,并将此代码放入其中,将development.editorconfig
复制为.editorconfig
。CodingGuideline.targets
会自动触发,并将.editorconfig
文件复制到每个项目的根目录下。摘要
正如您所看到的,我们实际上不需要在两个解决方案上定义
Directory.Build.props
。当然,如果你想在项目中保留这两个配置文件,我不能干涉你的事务。顺便说一下,我们决定使用**.editorconfig而不是ruleset**。因为这篇文档说ruleset如你所说已弃用,他们建议使用**.editorconfig**。
我认为第一个解决方案比第二个解决方案好。由于
.editorconfig
文件在目录级别是唯一的,因此没有任何存储库/解决方案/项目包含.editorconfig
文件。但是开发人员必须手动将.editorconfig
文件放到根存储库目录中。恰恰相反,第二种解决方案更加自动化,但整个存储库必须包含
.editorconfig
。也许有一种方法可以隐藏它从解决方案资源管理器,但我不能完全研究。qgzx9mmu2#
由于您的配置条件,
.editorconfig
文件不是添加自定义分析规则的理想选择。最好的方法是使用MSBuild函数Directory.Build.props文件来添加它们,这更纯粹。
1)创建一个规则集文件,并添加任何要用于Debug的代码分析
**2)**在项目文件夹下添加一个名为
Directory.Build.props
的文件**3)**在文件下面添加这些:
因此当您使用Release构建项目时,由于msbuild条件,规则集将跳过,并且仅适用于Debug模式。
您还可以为“发布”模式添加另一个规则集。并在相应规则集文件中的相应配置下添加代码Analysis。
46qrfjad3#
您也可以尝试保留您的
.editorconfig
文件并将其添加到您的项目(或某个地方的Directory.Build.props
文件):