文件嵌套不适用于 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>
在 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>