类项目或共享库项目的文件嵌套功能无法正常工作。

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

enter image description here

但是对于类库或共享库项目,它根本不起作用。无论您将设置更改为“默认”、“Web”甚至添加自定义文件嵌套设置都没有用。

enter image description here

有没有一种方法可以配置Visual Studio 2019,使文件嵌套也适用于类库项目等?我知道可以手动更改*.csproj文件以添加具有标记的条目,就像在早期的Visual Studio版本中一样,但我真的不喜欢为我拥有的所有类手动更改这个想法。
<Compile Update="$(ProjectDir)\Person.*.cs">
  <DependentUpon>$(ProjectDir)\Person.cs</DependentUpon>
</Compile>
4个回答

12

对于使用Visual Studio 2022进行非Web项目开发的人,这是来自Github的解决方案,帮助我解决了问题。

要在VS 2022中为非Web项目启用可配置文件嵌套,请将以下内容添加到您的.csproj文件中:

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

9

Translated Answer:

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

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

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

更新:

从Visual Studio 2019版本16.7开始,应该已经修复了此问题。


这在我的 .NET Core 3.1 类库项目中不起作用,该项目包含 TypeScript 源文件和输出 JS。我正在使用 VS 2019 16.10。 - Dai
这实际上可以与.NET Core 3.1库一起使用...但是必须在解决方案级别添加一个.filenesting.json文件。似乎还需要它位于“Solution Items”文件夹内。所需的嵌套设置可以选择独立定义..而不是创建具有所有现有默认设置的新文件,只要设置"root": false-基本上将设置附加到现有的默认配置中即可。 - ganjeii
4
在VS2022中似乎出现了问题 :( - Sean

4
跟随 @phihi 的答案:
@phihi的解决方案实际上可以在.NET Core 3.1库中使用;但是, 此外还必须在解决方案层面添加一个 .filenesting.json 文件。看起来新的 .filenesting.json 还必须位于“Solution Items”文件夹(文件夹名称可能无关紧要)内。
所需的嵌套设置可以选择单独定义,而不是创建一个具有所有现有默认设置的新文件,只要您设置了 "root": false - 这基本上会将设置附加到现有的默认配置而不会丢失任何默认设置。
成功大功告成。

1
同样适用于 .NET 5.0。非常好! - Mat
@Mat 谢谢您的验证! - ganjeii
这在.NET 5.0中不适用于类库。(Microsoft Visual Studio Community 2019 Version 16.11.0) - Igor
1
@NathanAldenSr 可以确认:我有一个非 ASP.NET Core 解决方案,使用 VS2019 嵌套文件,但在 VS2022 中并未嵌套它们。 - Chris R. Donnelly
3
更新:17.1 预览版中将“可配置文件嵌套”列为“预览功能”。 - Chris R. Donnelly
显示剩余4条评论

0

我在使用.NET6的类库项目时遇到了这个问题。不要使用类库模板,而是使用Razor类库

模板窗口

您需要在添加新项窗口中选择Razor组件选项

可用项模板


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