Visual studio 在调试和发布配置之间指定单独的.editorconfig文件
我使用的是VS 2019 16.8.3,我想在solution.editorconfig文件中指定一些代码分析规则(dotnet_diagnostic.CAXXXX.severity),仅用于发布版本 当我在.editorconfig文件中添加规则时,调试生成时间会增加几分钟。在项目属性中,未选中“在生成时运行”的所有分析器复选框 所以我想从代码分析中排除调试构建。是否可以仅为发布版本指定.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并仅应用于手动代码分析?由于
或者,是否可以对生成禁用此.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.targets
将自动触发,并将.editorconfig
文件复制到每个项目根目录
总结 如您所见,我们实际上不需要在这两种解决方案上定义
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>