文件嵌套不适用于类或共享库项目
Posted
技术标签:
【中文标题】文件嵌套不适用于类或共享库项目【英文标题】:Filenesting not working for Class or Shared Library Projects 【发布时间】:2020-04-11 20:13:53 【问题描述】:在 Visual Studio 2019 Web 项目中,解决方案资源管理器中的文件嵌套非常有用。如果您添加一个名为 ClassA.cs
的文件和另一个名为 ClassA.Custom.cs
的文件,它们将按原样嵌套。
但对于类或共享库项目,它根本不起作用。将设置更改为“默认”或“Web”甚至添加自定义文件嵌套设置都没有关系。
有没有办法配置 Visual Studio 2019,以便文件嵌套也适用于类库项目等?
我知道可以手动更改 *.csproj 文件以添加带有 <DependentUpon>
标签的条目,就像在早期的 Visual Studio 版本中一样,但我真的不喜欢为我的所有类手动更改它的想法有。
<Compile Update="$(ProjectDir)\Person.*.cs">
<DependentUpon>$(ProjectDir)\Person.cs</DependentUpon>
</Compile>
【问题讨论】:
【参考方案1】:原答案:
在 Github.com 和开发者社区上有一个关于此主题的问题:
Issue 5722 Developer Community 483587存在解决此问题的方法 - 至少适用于 .Net Standard 2.0。将以下行添加到您的 *.csproj 文件中:
<ItemGroup> <ProjectCapability Include="DynamicDependentFile" /> <ProjectCapability Include="DynamicFileNesting" /> </ItemGroup>
更新:
这个问题应该从 Visual Studio 2019 Verison 16.7 开始修复。
【讨论】:
这在包含 TypeScript 源文件和输出 JS 的 .NET Core 3.1 类库项目中对我不起作用。我正在使用 VS 2019 16.10。 这 does 实际上适用于 .NET Core 3.1 库...但必须有一个 .filenesting.json 在解决方案级别添加。似乎还要求它位于“Solution Items”文件夹中。可以选择单独定义所需的嵌套设置。而不是使用所有现有默认设置创建新文件,只要您设置"root": false
- 实质上是将设置附加到现有默认配置。
这似乎在 VS2022 中被破坏了 :(【参考方案2】:
支持@phihi 的答案。
@phihi 的解决方案确实实际上适用于 .NET Core 3.1 库;但除此之外,必须在 solution 级别添加一个 .filenesting.json 文件。似乎还要求新的 .filenesting.json 位于解决方案级别的“Solution Items”文件夹中(文件夹名称可能无关紧要)。
可以选择单独定义所需的嵌套设置。而不是使用所有现有默认设置创建新文件,只要您设置“root”:false - 这实际上将设置附加到现有默认配置而不会丢失任何默认设置。
大成功?
【讨论】:
也适用于 .NET 5.0。非常好! @Mat 感谢您的验证! 这不适用于带有 .NET 5.0 的Class Library
。 (Microsoft Visual Studio Community 2019 版本 16.11.0)
在 VS Community 2022 RC3 中也不适合我。我的文件存储在解决方案旁边,添加了一个解决方案项目,内容设置为与屏幕截图相同的内容,但在我的情况下它是 .Records.cs
。
@NathanAldenSr 您提到您的 filenesting.json 文件存储在解决方案旁边;而 is 应该在解决方案之内,但在任何项目之外……这就是你的意思吗?仍然无法正常工作?我还没有在 VS 2022 中验证这一点。以上是关于文件嵌套不适用于类或共享库项目的主要内容,如果未能解决你的问题,请参考以下文章