gpt4 book ai didi

visual-studio - 在调试和发布配置之间指定单独的 .editorconfig 文件

转载 作者:行者123 更新时间:2023-12-05 09:06:36 24 4
gpt4 key购买 nike

我正在使用 VS 2019 16.8.3,我想在解决方案 .editorconfig 文件中指定一些代码分析规则 (dotnet_diagnostic.CAXXXX.severity),仅适用于发布版本。

当我在 .editorconfig 文件中添加规则时,调试构建时间会增加几分钟。项目属性中的所有分析器复选框均未选中以“在构建时运行”。

所以我想从代码分析中排除调试版本。是否可以仅为发布版本指定 .editorconfig 文件?

或者是否可以为构建禁用此 .editconfig 并仅适用于手动代码分析?

最佳答案

长见识

您可以像这样在 Directory.Build.props 中设置您的 .editorconfig 文件:

<Project>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
<EditorConfigFiles Include="xxx\debug.editorconfig" Link=".editorconfig"/>
</ItemGroup>

<ItemGroup Condition="'$(Configuration)'=='Release'">
<EditorConfigFiles Include="xxx\release.editorconfig" Link=".editorconfig"/>
</ItemGroup>
</Project>

深入探讨

我们公司也有同样的问题。我们想为调试和发布配置的一个特定规则设置不同的严重性。我们想要这样做的原因是,当开发人员在开发环境中(在他/她的计算机中)收到警告时,拉取请求在 Azure DevOps 环境中的项目或解决方案构建阶段出现错误。

顺便说一句,我们有一个名为CodingGuideline 的存储库来存储我们的.editorconfig 文件并引用一些分析器,如StyleCop。同时,这个仓库是一个nuget包。我们所有的存储库都引用了这个包。

我们有如下一些解决方案:

解决方案一

  • 我们可以存储.editorconfigreview.editorconfig 单独的文件。开发人员已经有存储库目录来保存公司存储库,每个人都手动将 .editorconfig 放到这个目录中。 (如果你不想手动放置配置文件,你可以尝试解决方案2)这样,整个存储库将遵循相同的代码风格和编码规则。

  • 如果任何开发人员创建拉取请求,CodingGuideline 存储库将自动克隆到构建目录。克隆后,review.editorconfig 文件被复制并命名为 .editorconfig。就是这样。当运行 dotnet build 命令并且一些定义 review.editorconfig 的规则被破坏时,pull request 将抛出错误。

解决方案2

  • 如果我们不想手动放置配置文件,我们可以通过nuget包部署配置文件。在此选项中,我们存储 development.editorconfigreview.editorconfig 单独的文件。我们不能将文件名用作 .editorconfig,因为我们无法部署具有此名称的文件。

  • 我们应该创建 CodingGuideline.targets(ProjectName.targets) 文件到 CodingGuideline nuget 包存储库并将此代码放入将 development.editorconfig 复制为 .editorconfig

    <Project>
    <Target Name="CodingGuidelineEditorConfig" AfterTargets="BeforeBuild" BeforeTargets="CoreBuild">
    <Copy SourceFiles="$(MSBuildThisFileDirectory)\development.editorconfig" DestinationFiles=".editorconfig" />
    </Target>
    </Project>
  • 当我们将CodingGuideline引用添加到任何存储库时,CodingGuideline.targets会自动触发并将.editorconfig文件复制到每个项目根目录。

  • 拉取请求部分与解决方案 1 相同。


总结

如您所见,我们实际上不需要在两个解决方案上都定义Directory.Build.props。当然,如果你想把这两个配置文件都保留在项目中,我不能干涉你的事。

顺便说一句,我们决定使用.editorconfig 代替规则集。因为这个documentationruleset 如您所说已弃用,他们建议使用 .editorconfig

我认为第一个解决方案比第二个解决方案更好。因为 .editorconfig 文件在目录级别是唯一的,所以没有任何存储库/解决方案/项目包含 .editorconfig 文件。但是开发者必须手动将.editorconfig文件放到仓库根目录下。

恰恰相反,第二种解决方案更加自动化,但整个存储库必须包含 .editorconfig。也许有一种方法可以将它从解决方案资源管理器中隐藏起来,但我无法完全研究。

Every project has a .editorconfig file

关于visual-studio - 在调试和发布配置之间指定单独的 .editorconfig 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65769873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com