Visual Studio Solutions文件夹作为真正的文件夹

问题描述 投票:96回答:14

我有一个Visual Studio解决方案。目前,它是一个空的解决方案(=没有项目),我添加了一些解决方案文件夹。

解决方案文件夹似乎只是“虚拟文件夹”,因为它们实际上并不是在文件系统中创建的,而解决方案文件夹中的文件只是与.sln文件位于同一文件夹中。

是否有一个我忽略的设置告诉Visual Studio将解决方案文件夹视为“真正的”文件夹,即在文件系统中创建它们并将文件移动到其中一个文件夹中时将文件移入其中?

编辑:谢谢。要为VS2010提出建议然后:)

visual-studio
14个回答
38
投票

没有特别的设置。我认为它不受支持。

您可以在解决方案中的“项目”中创建真实文件夹,但不能在解决方案本身中创建。


2
投票

Visual Studio不支持这一点。我做了一个扩展,为VS2013做了类似的事情。它将解决方案文件夹映射到硬盘驱动器上的物理文件夹,但映射是一种方式(从硬盘驱动器到解决方案)。这意味着解决方案文件夹的内容将反映硬盘驱动器文件夹的内容,而不是其他方式。

除此之外,扩展可能仍然有用。它支持将解决方案文件夹映射到物理文件夹,基于正则表达式过滤文件和目录,以及记住.sln文件中的映射。属性是非侵入性的,因此没有扩展的开发人员仍然可以打开sln而不会受到影响。

在视觉工作室画廊举办:https://visualstudiogallery.msdn.microsoft.com/69e19ea6-4442-4cb6-b300-044dd21f02bd

编辑:上传到bitbucket。现在开源。 MIT许可证。 https://bitbucket.org/LSS_NorthWind/physical-solution-folders


1
投票

如下所述,在解决方案下创建的文件夹将是虚拟的。也许这可能被称为解决方法,但您可以在添加新项目/项目之前或之后在磁盘上物理创建文件夹,而Robert应该是您父亲的兄弟。

ps-仔细看看也许我应该解释“bob是你的叔叔”意味着你的罚款/排序。


1
投票

您可以通过为Visual Studio项目文件选择“添加新过滤器”来添加实际文件夹。您还可以在现有文件夹下执行“添加新过滤器”。创建文件夹后,重命名该文件夹并添加源文件或头文件或适合您的项目。这是我知道的一种方式,它允许我们通过Visual Studio IDE创建真正的文件夹。


1
投票

创建“解决方案文件夹”。这将创建逻辑文件夹,但不是物理文件夹。右键单击解决方案文件夹并打开一个新项目对话框。但在单击“确定”之前,必须将项目位置更改为所需的物理文件夹,VS将创建它并将项目放在其中。


0
投票

我有一个解决方法(它不是很好,但它的工作原理)。

  1. 在解决方案中创建一个文件夹(即“Contoso”)
  2. 右键单击解决方案,然后单击“在解决方案资源管理器中打开文件夹
  3. 在解决方案目录中创建物理文件夹(即“Contoso”)
  4. 复制/创建物理文件夹中的文件。
  5. 将文件拖到解决方案资源管理器中的虚拟文件夹中。

它不是很好,因为你需要手动维护文件引用,但它适用于我。


37
投票

有一种解决方法,实际上表现如预期。

  1. 将新的或现有的网站添加到解决方案中。 (我通常会创建一个新的。)
  2. 只需确保在解决方案文件夹中创建它。 (我有时甚至会创建一个外部文件夹的“链接”,例如网络共享上的“文档”或“营销”。在这种情况下,Git当然会忽略它。)
  3. 确保转到“项目”设置或配置管理器以从构建和部署中排除此“网站”!

完成。现在,解决方案资源管理器将反映文件系统中的任何更改,反之亦然(包括子文件夹)。

我(小姐)将它用于规范,文档,PM和团队内共享的一些DevOps脚本。它很容易选择,包含在源代码控制中的内容与否,以及(如果设置正确)它与构建不冲突。

我知道该功能不适用于该用例,但除了可能具有误导性的“项目”图标之外,我还没有发现该黑客的任何短缺。并且仍然存在VS提供的经典(虚拟)解决方案文件夹的用例,适合图片。你怎么看?


17
投票

在Visual Studio 2017中,单击“解决方案资源管理器”窗口中的“解决方案和文件夹”图标。此按钮从虚拟“解决方案”视图切换到与文件系统上的文件夹和文件的布局相匹配的“源视图”。添加新文件夹时,将在预期位置物理创建该文件夹。 solutions and folders


8
投票

萨拉福特贡献了一个宏来增加这一点。在Visual Studio 2010中,如果打开宏资源管理器,您将看到一个名为“GenerateSlnFolderOnDirStructure”的宏。这将自动创建解决方案文件夹并添加文件。


5
投票

选择的答案表明可以使用实际项目而不是解决方案文件夹,但并没有真正解释如何。我想我在这里所描述的可能是达到这个目标最不尴尬的方式...... :-P

常规项目文件的问题是它们最终将由MSBUILD编译。如果你想要一个只包含不可编译文件的项目,那将是一个问题。

但前段时间Visual Studio引入了一个新的项目类型:Shared Project(.shproj扩展名)。默认情况下,此项目类型不会被编译,但仅在(并且仅当)它被另一个项目引用时才会被编译。

因此,这里的一部分技巧是使用共享项目而不是解决方案文件夹。显然可以添加一个从未被任何其他项目引用的共享项目,这意味着我们可以避免上面提到的问题。

然后,通过在.shproj文件中使用<None Include="**/*" />子句,我们可以使它自动反映任何新文件和/或子文件夹。

所以基本上这样做:

  • 在解决方案中创建一个新文件夹。
  • 在此新文件夹的根目录中添加新的.shproj文件。
  • 在解决方案中引用新的.shproj。

例如,在我的例子中,我创建了一个DockerDev.shproj,因此我可以将一些仅在我们的开发机器中运行的与docker相关的脚本组合在一起:

<?xml version="1.0" encoding="utf-8"?>
<!-- DockerDev/DockerDev.shproj -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="**/*" />
  </ItemGroup>
</Project>

此.shproj文件将跟踪我的解决方案中这个新的DockerDev文件夹的任何子文件夹中的任何文件。

据我所知,这个解决方案与OP请求的工作方式非常相似:它可以作为文件夹的不可编译引用,它会自动反映对它所做的任何更改。


3
投票

不,它不受支持。如您所料,解决方案文件夹只是.sln文件中的虚拟子条目,与文件系统无关。


3
投票

Folder To Solution Folder By Cecilia Wirén - CeciliaSHARP

删除将几个文件添加到解决方案文件夹的麻烦。只需使用解决方案的上下文菜单,然后在创建新解决方案文件夹的选项下方,您现在可以找到“将文件夹添加为解决方案文件夹”。这将创建一个与您选择的名称相同的解决方案文件夹,并将该文件夹内的项目添加到解决方案文件夹中。这不会移动磁盘上的文件。


3
投票

注意:是的,你可以在root上创建一个文件夹但是它有点棘手....

通过额外的努力你可以做到如何?让我们按照步骤 -

  • 1-Create Folder例如:root上的“newfolder”(你的.sln文件所在的位置)。
  • 2.复制并粘贴文件夹中的项目。
  • 3.转到您的sln文件并找到已移动的项目并在移动的项目地址中附加newfolder \。
  • 4.Save sln文件。
  • 5.打开你的项目并在git中提交存储库...
  • 6.将存储库放在新的位置。 你做完了......

如果你仍然无法看到你的文件夹-----

  • 1.添加解决方案文件夹xyz。
  • 2.打开sln文件并使用您的文件夹名称更改该文件夹名称。

恭喜你完成..

如果你遇到任何问题,请写信给我帮忙..


2
投票

我自己想要这个功能几次,但在一天结束时,你真的不希望能够做到这一点。将您的解决方案(文件)视为Web应用程序的根,并将解决方案文件夹视为虚拟目录(从字面上和功能上)。 Web虚拟目录的内容可以完全在不同的服务器上。 Visual Studio混乱的解决方案文件夹概念是允许您在文件夹中创建新文件。添加内容时,您应始终“添加现有”。添加现有内容时,会创建指向文件源位置的链接。

但是,由于您不希望解决方案文件夹的行为类似于“物理”文件夹,因为您的解决方案布局可能不一定使用与源控件布局相同的约定。解决方案文件夹允许您自定义项目的层次结构,以便您可以按照自己喜欢的方式将项目和项目组合在一起,然后决定您不喜欢它并再次更改它而无需经历移动源代码控制项目的噩梦围绕并激怒你的团队的其他成员。

© www.soinside.com 2019 - 2024. All rights reserved.