最近升级后生成了新的GeneratedMSBuildEditorConfig文件

18

我一直在升级一个项目,自从安装了最新版本的Visual Studio 2019后,发现以下文件被输出到磁盘:

MyProjectName.GeneratedMSBuildEditorConfig.editorconfig

我认为这与Roslyn编译器有关,并在此提交中引入:https://github.com/dotnet/roslyn/commit/de348c5a77977459a4138de0a62487e00980e28a#diff-e87b4990385fcfea8cf3f744bb8ad23e

显然,人们会产生以下问题:这个文件是什么?它是做什么的?它是否应该被包含进源代码控制或排除掉?我知道什么是.editorconfig文件,但这个文件出现令人意外。我的搜索没有发现任何信息。有人能够解释一下吗?

2个回答

31

更新: 这个问题在 Visual Studio 16.9 及以上版本中已经解决。


使用传统/非 SDK 样式项目时会出现一个 bug,导致这些文件输出到错误的位置。我们已经发布了一个修复程序,链接在这里:https://github.com/dotnet/roslyn/pull/48781

作为一种解决方法,在临时情况下,您可以将以下内容添加到项目文件以显式设置生成的文件输出路径。

<PropertyGroup>
    <GeneratedMSBuildEditorConfigFile>$(IntermediateOutputPath)\$(MSBuildProjectName).GeneratedMSBuildEditorConfig.editorconfig</GeneratedMSBuildEditorConfigFile>
</PropertyGroup>

你可能忘记在 $(IntermediateOutputPath)$(MSBuildProjectName) 之间加上反斜杠了。 - ceej
@ceej 我可以确认需要使用反斜杠。否则文件会被重新创建。 - stev-e
2
您可以将解决方法部署到 Directory.Build.targets 文件中,从而为多个项目提供支持(不要使用 .props 文件,因为在加载 .props 文件的阶段,$IntermediateOutputPath 尚不可用)。 - Melvyn
3
似乎在Visual Studio 2019版本16.9或刚发布的.NET SDK 5.0.2中已经修复了这个问题。我移除了额外的设置,再也没有看到在项目根目录下生成的文件了。 - ChrisTorng
对我来说,在VS 16.9.2和dotnet SDK 5.0.201中仍未解决此问题。但是这个解决方法对于这些非SDK样式的项目完美地起作用。谢谢! - Tom Pažourek

2
正确的Pull Request是 这一个 -- 它被设计成一种传递值给某些Roslyn分析器的MSBuild逻辑方式。这是内部实现细节,不应该被检入源代码控制中。
我很惊讶你注意到了这个文件 -- 它应该被生成到你的 obj\ 目录中,你应该已经将其排除在源代码控制之外,并且在第一次使用时并没有真正注意到它。它是否在其他地方生成了?

不是原帖作者,但对我来说,该文件在项目的根目录中生成。(例如 ProjectName\ProjectName.GeneratedMSBuildEditorConfig.editorconfig)。我该怎么解决?BaseIntermediateOutputPathIntermediateOutputPath的值分别为“obj\”和“obj\x64\Debug\”。 - Bouke
2
(此处发布问题:https://github.com/dotnet/roslyn/issues/48430) - Bouke
Jason,我看到了与@Bouke相同的行为。它是在项目根目录中创建的。 - ceej

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