Visual Solution Explorer中的实际文件夹?

16

MS Visual Studio有一个“解决方案资源管理器”,我可以在其中看到所有项目文件,我还可以创建过滤器,这些过滤器类似于将文件放在组中的文件夹。问题是 - 我希望我的文件在Visual中和物理上分成组,但我不想在Visual和磁盘上都要应用每个更改两次。有没有办法在Visual解决方案资源管理器中显示实际的文件夹,以便我能看到它们在磁盘上的位置(并且不,“显示所有文件”并不能做到这一点,我已经检查过了)?


对我来说,“显示所有文件”只有在项目文件位于所有源文件的父文件夹中时才有效,如果项目文件位于其自己的单独文件夹中,则无效。 - entheh
3个回答

6
没有-SE和文件系统都拥有独立的结构/层次信息副本。
我通常禁用过滤器并将文件放在我想要的位置,这样两个结构默认情况下保持同步(如果您想要任何类型的源代码组织,任何其他方式似乎都是疯狂的 - 我总是将组件文件分组到单独的文件夹中)。
然后(禁用过滤器)...
如果您在“解决方案资源管理器”中创建文件夹,并使用该文件夹的上下文菜单来“添加新项...”或“添加现有项”,则磁盘结构将反映“解决方案资源管理器”(现有项目是复制而不是从它们当前所在的位置引用的,以确保这一点,如果您将内容添加到错误的SE文件夹中,则可能会在项目周围留下旧文件的副本)。否则,通常仅当您“添加为链接”时,VS才会将项目放置在SE中不同的文件夹中。
为了整理事物,最简单的方法是(在备份副本之后):
打开解决方案和文件资源管理器,并手动“diff”它们。任何“错误”的文件都应从SE中删除,移动到正确的磁盘位置,然后通过使用正确的SE文件夹的上下文菜单将其添加到SE。
如果文件夹不是太多,则更简单的方法是仅从解决方案资源管理器中删除所有文件,然后将它们(一个文件夹一个)添加回项目中,确保在进行操作时创建正确的文件夹名称,并且从每个文件夹的上下文菜单中添加。通过从头开始重建SE,您可以相当快速地同步两个布局,这通常比尝试找出差异要容易得多。
一旦它们同步,只使用SE来管理文件,并小心使用正确文件夹的上下文菜单添加项目。如果您在磁盘上移动内容,将会断开链接。

1
请注意,这仅适用于C/C++项目。C#项目的文件具有1对1的映射。 - Sebastiaan M
@Sebastiaan:是的,我能想到两个例外情况:1)当您将文件添加为“链接”时,它们不需要具有1:1映射(但这些文件会显示为明显的链接图标)。2)1:1映射仅适用于项目内部,但项目本身(在解决方案中)不需要具有1:1路径映射。 - Jason Williams

3

如果您单击“显示所有文件”,则会将解决方案资源管理器从显示文件的虚拟筛选器切换为显示文件的物理筛选器。


2
OP在问题中表示这个解决方案没有起作用。 - psubsee2003

0

通过过滤器,我想你指的是解决方案文件夹。它们是虚拟文件夹,对文件系统没有影响。我使用的一个技巧是创建一个临时项目。添加到项目文件夹中的项会保持它们之间的关系。这是一种hack方法,但它有效。如果有人知道更好的方法,请告诉我。


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