Azure DevOps管道:Visual Studio构建任务忽略.editorconfig中的设置

5
在我的.NET Framework (C#)解决方案中,我使用了一些Roslyn分析器,它们的设置在.editorconfig文件中进行了调整。
当我在VS 2019本地构建我的解决方案时,分析器没有发出任何警告。
当我在Azure DevOps管道任务中构建解决方案时,会生成与Roslyn相关的警告。

build task warning in build task

在我看来,DevOps管道任务似乎忽略了.editorconfig文件中的设置。我该如何让管道任务考虑.editorconfig文件的设置?


嗨,这个问题有任何更新吗?请检查一下我的答案是否有助于解决您的问题 :) - LoLance
我和@LanceLi-MSFT有同样的问题。我正在尝试从代码分析中排除生成的代码。在Visual Studio中可以工作,但在Azure Pipelines中不行。.editorconfig与csproj文件在同一个文件夹中。内容看起来像[Generated/**/*.cs] dotnet_analyzer_diagnostic.severity = none - Dustin Metzgar
@LanceLi-MSFT,我们正在使用由Microsoft托管的Ubuntu 18.04代理。 - Dustin Metzgar
2个回答

3
如何让pipeline任务考虑.editorconfig文件的设置?
在pipeline中,我们不需要手动设置.editorconfig文件的任何内容,只需将它放置在项目文件夹下即可自动工作。我已经在本地机器和构建pipeline中测试了它,应该可以正常工作。
因此,你需要做以下事情:
1.转到Azure Devops Repos,检查.editorconfig文件是否与xx.csproj文件位于同一文件夹中。注意选择的分支,确保用于运行构建管道的分支具有.editorconfig文件。
2.检查.editorconfig文件的内容,检查是否包含类似于以下语句的声明:
# SA1633: File should have header
dotnet_diagnostic.SA1633.severity = none

你的 .editorconfig 文件不包含以下定义,就无法抑制这些警告。

3.尝试使用不同的代理,我假设你正在使用自主代理。 这意味着您正在调用本地VS实例来运行作业,可能出现问题。 我建议您可以尝试使用 microsoft-hosted 代理(选择 windows-latest),在我的端上效果很好。 如果您继续使用自主代理,请更新本地VS至最新版本。

4.指定nuget.exe的版本,4.4.0版本太旧了。请尝试使用5.3.1及以上版本。

希望以上所有内容能有所帮助 :)


2
在解决方案文件夹中只有一个.editorconfig怎么样?你是说,对于包含72个项目的解决方案,我需要将该文件复制72次并将副本放入每个项目文件夹中吗?! - bubbleking

1
我们今天遇到了类似的问题,发现 MSBuild 16.9 优先处理代码分析的 ruleset 文件而非 .editorconfig 文件。因此,如果您的项目引用了一个将规则设置为错误的 ruleset,但是您的 editorconfig 将其更改为建议或警告,它仍然会将其视为错误。
由于 Azure DevOps 更新了 MSBuild 的版本到 16.9,而我们仍在使用 16.8,在本地机器上的行为与构建管道中发生的行为不同。
奇怪的是,在 editorconfig 文件中将严重性设置为 none 仍然可以防止分析器抱怨。

我们遇到了同样的问题,你找到了覆盖规则集并使用你的.editorconfig配置的方法吗? - Amichai
1
@Amichai:我最终删除了规则集,并将所有默认的严重性设置放入.editorconfig文件中。您仍然可以使用规则集文件、更深层次的editorconfig文件或全局分析器配置文件来覆盖单个项目的默认设置。任何在规则集文件中未明确指定的设置都将回退到editorconfig文件中设置的内容。 - StriplingWarrior
但是 .editorconfig 是为 Visual Studio 构建而设计的,而不是 MSBuild 构建。 - Dave Van den Eynde
@DaveVandenEynde:你为什么这么说?MSBuild尊重Roslyn分析器,而代码分析尊重.editorconfig设置 - StriplingWarrior
@DaveVandenEynde:你是在说MSBuild运行的代码分析不尊重在.editorconfig中找到的代码分析规则吗?我可以从经验中告诉你它确实尊重。你有什么理由认为它不尊重呢?(与MSBuild无关的文章中缺乏特定提及并不能证明它不尊重。) - StriplingWarrior
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接