文件嵌套不适用于 Class 或共享库项目

Filenesting not working for Class or Shared Library Projects

在 Visual Studio 2019 Web 项目中,解决方案资源管理器中的文件嵌套非常有用。如果您添加一个名为 ClassA.cs 的文件和另一个名为 ClassA.Custom.cs 的文件,它们将按照应有的方式嵌套。

但对于 Class 或共享库项目,它根本不起作用。将设置更改为 "Default" 或 "Web" 甚至添加自定义文件嵌套设置都没有关系。

有没有办法配置 Visual Studio 2019,以便文件嵌套也适用于 Class 图书馆项目等?

我知道可以手动更改 *.csproj 文件以添加带有 <DependentUpon> 标签的条目,就像在早期 Visual Studio 版本中一样,但我真的不喜欢更改的想法这对我所有的 类 都是手动的。

<Compile Update="$(ProjectDir)\Person.*.cs">
  <DependentUpon>$(ProjectDir)\Person.cs</DependentUpon>
</Compile>

原答案:

Github.com 和开发者社区存在关于此主题的问题:

存在解决此问题的方法 - 至少适用于 .Net Standard 2.0。将以下行添加到您的 *.csproj 文件中:

<ItemGroup> <ProjectCapability Include="DynamicDependentFile" /> <ProjectCapability Include="DynamicFileNesting" /> </ItemGroup>

更新:

此问题应从 Visual Studio 2019 Verison 16.7 开始修复。

小猪支持@phihi 的回答。

@phihi 的解决方案 实际上可以与 .NET Core 3.1 库一起使用;但除此之外,必须在 solution 级别添加一个 .filenesting.json 文件。似乎还需要新的 .filenesting.json 位于“Solution Items”文件夹中(文件夹名称可能无关紧要)在解决方案级别。

可以选择独立定义所需的嵌套设置..而不是使用所有现有默认设置创建新文件,只要您设置“root”:false - 这实际上是将设置附加到现有默认配置上而不用丢失任何默认设置。

大获成功

对于使用 Visual Studio 2022 和 non-web 项目的人来说,这是 Github 的解决方案帮助我修复了它。

To enable configurable file nesting for non-web projects in VS 2022, add this to your .csproj file:

<ItemGroup>
  <ProjectCapability Include="ConfigurableFileNesting" />
  <ProjectCapability Include="ConfigurableFileNestingFeatureEnabled" />
</ItemGroup>