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

Visual studio 在调试和发布配置之间指定单独的.editorconfig文件,visual-studio,msbuild,visual-studio-2019,editorconfig,Visual Studio,Msbuild,Visual Studio 2019,Editorconfig,我使用的是VS 2019 16.8.3,我想在solution.editorconfig文件中指定一些代码分析规则(dotnet_diagnostic.CAXXXX.severity),仅用于发布版本 当我在.editorconfig文件中添加规则时,调试生成时间会增加几分钟。在项目属性中,未选中“在生成时运行”的所有分析器复选框 所以我想从代码分析中排除调试构建。是否可以仅为发布版本指定.editorconfig文件 或者,是否可以对生成禁用此.editconfig并仅应用于手动代码分析?由于

我使用的是VS 2019 16.8.3,我想在solution.editorconfig文件中指定一些代码分析规则(dotnet_diagnostic.CAXXXX.severity),仅用于发布版本

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

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


或者,是否可以对生成禁用此.editconfig并仅应用于手动代码分析?

由于您的配置条件,
.editorconfig
文件不是添加自定义分析规则的好选择

最好的方法是使用MSBuild函数文件添加它们,这更纯粹

1)创建一个规则集文件,并添加要用于调试的任何代码分析

2)在项目文件夹下添加一个名为
Directory.Build.props
的文件

3)在文件下添加以下内容:

<Project>

  <PropertyGroup Condition="'$(Configuration)'=='Debug'">

    <!--the full path of your ruleset file for Debug mode-->
    <CodeAnalysisRuleSet>xxx\RuleSet1.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>


</Project>

xxx\RuleSet1.ruleset
因此当您使用版本构建项目时,规则集将由于msbuild条件而跳过,并且仅适用于调试模式

您还可以为发布模式添加另一个规则集。并在相应的规则集文件的相应配置下添加代码分析。

TLDR 您可以在
目录.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>
  • 当我们将CodingGuideline引用添加到具有的任何存储库时,
    CodingGuideline.targets
    将自动触发,并将
    .editorconfig
    文件复制到每个项目根目录

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


  • 总结 如您所见,我们实际上不需要在这两种解决方案上定义
    Directory.Build.props
    。但当然,如果您想在project中保留这两个配置文件,我不能干涉您的业务

    顺便说一下,我们决定使用.editorconfig而不是规则集。因为这表明规则集如您所说已被弃用,他们建议使用.editorconfig

    我认为第一种解决方案比第二种解决方案好。因为
    .editorconfig
    文件在目录级别是唯一的,所以所有存储库/解决方案/项目都不包含
    .editorconfig
    文件。但开发人员必须手动将
    .editorconfig
    文件放入根存储库目录

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


    您也可以尝试保留
    .editorconfig
    文件并将其添加到项目中(或某个
    目录.Build.props
    文件):

    
    错误的
    
    我在看一个pluralsight教程,它说规则集在将来不会得到很好的维护,最终会被.editorcofigs取代。你对此有何评论?参考:@CharithJ,没有
    Microsoft
    文档表明VS将放弃规则集。对于规则集的经典和传统方式,Vs没有理由放弃它,至少它会保留它。对于许多使用规则集的用户来说,放弃它是不科学的。如果微软真的想放弃它,微软肯定会有一个缓冲方法,至少可以确保规则集仍然被使用。我想你不必对此太担心。您仍然可以使用规则集,它对于代码分析非常有用。谢谢!您能想出任何解决方法来排除.editorconfig只用于调试生成吗?或者对于所有构建,仅手动执行?如果要使用规则集,我们可能需要向规则集添加近千条规则。或许可以尝试一下:
    是未来的最佳方法,IMO。
    <Project>
        <Target Name="CodingGuidelineEditorConfig" AfterTargets="BeforeBuild" BeforeTargets="CoreBuild">
            <Copy SourceFiles="$(MSBuildThisFileDirectory)\development.editorconfig" DestinationFiles=".editorconfig" />
        </Target>
    </Project>