VisualStudio 中的组文件

我正在寻找整理我的项目在 Visual Studio 布局,我想知道是否有任何黑客,插件或技巧联系一个。一个 xml 文件。Cs 文件 同名同姓,这样它们就会出现在我的解决方案导航器/浏览器中。

类似于代码隐藏文件与其 aspx 关联的方式。

alt text

欢迎任何建议,谢谢

26050 次浏览

在您的项目文件中:

<Compile Include="FileA.cs"/>
<Compile Include="FileA.xml">
<DependentUpon>FileA.cs</DependentUpon>
</Compile>

或者您可以使用 VSCommands2010 VSCommands2010扩展的 Group Items命令。

编辑: 如果你的文件在一个文件夹中,不要在 DependentUpon标签中包含文件夹名。例如,如果文件在 Helpers文件夹中:

<Compile Include="Helpers\FileA.cs"/>
<Compile Include="Helpers\FileA.xml">
<DependentUpon>FileA.cs</DependentUpon>
</Compile>

如果您不想使用沉重且专有的 VSCommand 扩展来降低 IDE 的速度,那么可以改用小扩展 NestIn。它只能处理 group/ungroup 文件

对于文件是“顶级”文件的简单情况,Julien 的描述非常完美。但是,在 DependentUpon 文件位于项目下的文件夹中的情况下,这看起来不同。我个人不喜欢它,因为它似乎会导致歧义,但这只是一种观点。

<Compile Include="DataStructs\CKDTree.cs" />
<Compile Include="DataStructs\CClosestObjects.cs" >
<DependentUpon>CKDTree.cs</DependentUpon>
</Compile>

注意,依赖项不包括父文件夹的文件夹。这在 VS2013中是正确的... 可能在早期版本中是正确的,但是我还没有验证它。

不确定人们是否知道,但是像这样的嵌套文件似乎破坏了 VS 重命名根文件的能力,至少当您的新嵌套文件也是一个分部类时是如此。例如,这是我们创建的树..。

MainWindow.xaml
MainWindow.xaml.cs
MainWindow.Commands.cs

主窗口。Cs 只是 MainWindow 的另一个部分类,与 MainWindow.xaml.cs 相同。但是,如果然后尝试重命名 MainWindow.xaml,而不是自动重命名依赖文件,则会引发异常。

为了完整起见,我还尝试将文件命名为 MainWindow.xaml.Commands.cs,但这也不起作用。

当然,如果没有额外的“命令”文件,重命名可以正常工作。

MainWindow.xaml
MainWindow.xaml.cs

无论如何,这是我们放弃这样的嵌套文件的足够理由。没有重命名的能力,就不值得这么做。

文件嵌套 扩展是 Visual Studio 的一个很好的扩展。在写这个答案的时候,它有大约50万的下载量。我个人将它添加到我的 VS 2015中,它运行良好(还没有在 VS 2017中尝试过)。

在.NET (核心 +)中

<ItemGroup>
<Compile Update="FileA.*.cs">
<DependentUpon>FileA.cs</DependentUpon>
</Compile>
</ItemGroup>

请注意,使用的是 Update而不是 Include,因为 Include中的文件已经(隐式地)包含在项目中,并且使用 Include会导致编译时 “错误 NETSDKxxxx 包含重复的‘编译’条目... 重复的条目是: ‘ FileA.xxxx.cs’C: Program Files dotnet sdk x.x.x.x Sdks Microsoft.NET.Sdk 目标 Microsoft.NET.Sdk. DefaultItems. Shared.target”

参见 在.net 核心应用程序中是否有 DependentUpon 选项?