将 Visual Studio Solutions 对应的文件夹作为真正的文件夹

我有一个 VisualStudio Solution。目前,它是一个空的 solution(里面没有项目) ,我已经添加了一些 solution 文件夹。

solution文件夹似乎只是“虚拟文件夹”,因为它们并非真正在文件系统中创建,而 solution 文件夹中的文件只是 .sln 文件。

是否有一个我可能忽略了的设置,这个设置能让 Visual Studio 将 Solution文件夹视为“真实”的文件夹,即在文件系统中创建它们并在将文件移动到其中的解决方案文件夹时将其移动进去?

编辑: 谢谢,算是对 VS2010提个建议吧:)

80094 次浏览

没有特殊设置,我觉得没有支持。

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

不,没有支持。如您所料,解决方案文件夹只是。Sln 文件,与文件系统无关。

解决方案下创建的文件夹将如上所述是虚拟的。也许这可以被称为解决方案,但是您可以在添加新项目之前或者添加新项目时在磁盘上实际创建文件夹,而且 Robert 应该是您父亲的兄弟姐妹。

仔细看看也许我该解释一下“ Bob 是你叔叔”意思是你没事了。

可以通过为 VisualStudio 项目文件选择“添加新筛选器”来添加实际文件夹。您还可以在现有文件夹下执行“添加新筛选器”。创建文件夹后,重命名它并添加源文件或头文件,或者任何适合您的项目的文件。这是我知道的通过 VisualStudioIDE 创建真实文件夹的一种方法。

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

我自己也曾多次想要这个特性,但是到最后,你真的想要 没有能够做到这一点。将解决方案(文件)视为 Web 应用程序的根,将解决方案文件夹视为虚拟目录(字面上和功能上)。Web 虚拟目录的内容可以在物理上完全位于不同的服务器上。VisualStudio 混淆解决方案文件夹概念的地方是允许您在文件夹中创建新文件。添加内容时应始终使用 “添加现有”。添加现有文件时,它会创建一个指向文件源位置的链接。

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

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

如果这个问题解决了,扩展可能还是有用的。 它支持将解决方案文件夹映射到物理文件夹,基于正则表达式筛选文件和目录,并记住。档案。属性是非侵入性的,所以没有扩展的开发人员仍然可以打开 sln 而不受影响。

视觉工作室画廊主持: Https://visualstudiogallery.msdn.microsoft.com/69e19ea6-4442-4cb6-b300-044dd21f02bd

编辑: 上传到 bitbucket。现在开放源码。麻省理工学院许可证。 https://bitbucket.org/LSS_NorthWind/physical-solution-folders

我有一个小的变通方案(这不是很好,但它的工作)。

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

这不是很好,因为您将需要手动维护文件引用,但它为我工作。

一个变通方案,它实际上表现得和预期的一样

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

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

我(怀念)使用它的规格,文档,下午和一些 DevOps 脚本共享的团队。它很容易选择,在源代码控制中包含什么,以及(如果设置正确)它不与构建冲突。

我知道这个特性并不适用于那个用例,但是除了那个可能有误导性的“项目”图标之外,我还没有发现那个黑客有什么不足之处。还有一些用例中,VS 提供的经典(虚拟)解决方案文件夹符合要求。你觉得怎么样?

文件夹到解决方案文件夹作者: Cecilia Wirén-CeciliaSHARP

消除向解决方案文件夹添加多个文件的麻烦。只需使用解决方案的上下文菜单,在创建新的解决方案文件夹的选项下面,您现在可以找到“添加文件夹作为解决方案文件夹”。这将创建与所选名称相同的解决方案文件夹,并将该文件夹中的项添加到解决方案文件夹。这将不会移动磁盘上的文件。

注意: 是的,这是可能的,你可以创建一个根文件夹,但它有点棘手... 。

通过付出一些额外的努力你就能做到,怎么做? 让我们按照步骤——

  • 1-创建文件夹,如根目录上的“ 新文件夹”(. sln 文件所在的位置)。
  • 2. 复制并粘贴文件夹中的项目。
  • 3. 访问 sln 文件,找到已移动的项目,并在已移动的项目地址中添加新文件夹。
  • 4. 保存 sln 文件。
  • 5. 打开您的项目,并在 git 中提交存储库..。
  • 6. 把仓库搬到新的地方。

    你完了。

如果你仍然不能看到你的文件夹——-

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

恭喜你完成了。

如果你遇到任何问题,只要写信给我的帮助. 。

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

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

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

普通的项目文件的问题在于它们最终将由 MSBUILD编译。如果你想有一个项目,只包含不可编译的文件,这 威尔是一个问题。

但不久前 VisualStudio 引入了一种新的项目类型: 共享计划(。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 所要求的非常相似: 它将作为一个不可编译的文件夹引用工作,并且它将自动反映对它所做的任何更改。

然后创建一个空的解决方案 在编辑器中打开.sln 文件 并将这些代码行放在 < strong > MiniumVisualStudioVersion 之后

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9D8C3BB1-AEDB-4757-8559-995D12A4E6D0}"

用 vs 打开解决方案,您应该向其添加相同的文件夹 现在您可以看到该文件夹并向其添加项目 在 windows 中有一个真正的文件夹,在 vs 中有一个虚拟文件夹

确保你 用那条路创建了项目

是的,在 VisualStudio2019中该项目是可能的

虽然这是一个老话题,但我还是要加上我的回答,因为我也遇到过同样的问题,我也在寻找解决方案,但似乎每个人都100% 肯定没有办法。所以我开始尝试 VS 2019,尝试了很多设置,最终找到了出路。

1按钮: D

您只需按下 点击1按钮 -Show All Files,就可以看到 VisualStudio 解决方案的物理结构:
VS 2019 - Show All Files Button

现在您可以向项目添加文件和文件夹,它们将被添加到文件系统(物理上)

右键单击您的项目→ AddNew Folder
注意,该选项从 New Filter更改为 New Folder
VS 2019 Add Folder Menu

我对 C + + 的推荐

  1. 在项目目录中创建一个根文件夹,其中包含所有与应用程序相关的内容(代码、头文件、数据、库...)。我把它命名为 Project
  2. 添加子文件夹,因为你想结构化你的代码。我喜欢以下 布局: includesrcdatalibs

Recommended VS 2019 Project Structure

  1. 现在设置 VisualStudio 将这些文件夹识别为标题和源目录。
    1. 在解决方案资源管理器中单击您的项目
    2. 转到项目属性菜单: ProjectProperties
    3. 打开 Configuration PropertiesVC++ Directories选项卡
    4. 编辑 Include Directories并设置为 $(ProjectDir)/Project/include;$(IncludePath)
    5. 编辑 Library Directories并设置为 $(ProjectDir)/Project/libs;$(LibraryPath)
    6. 编辑 Source Directories并设置为 $(ProjectDir)/Project/src;$(SourcePath)

VS 2019 Recommended Project Properties

  1. 如果您想专注于一个项目,可以使用 Scope to This选项。右键单击 Project文件夹,然后按 Scope to This
    • 注意,在这个操作之后,为了打开 Project Properties,你需要点击任何你的项目文件(如例子中的 main.cpp) ,然后点击可编辑的客户区(如当你想改变代码时) ,只有在这之后你才能看到 < br > ProjectCrazyDemo Properties选项。[视觉工作室是疯狂的]

最后,您可能会有这样一个项目

VS 2019 Recommended Project Example

对于 Visual Studio 2019中的 C # ,我使用这种方式(似乎与这个答案类似,但是至少在 C # 解决方案中不起作用)

  1. 在解决方案资源管理器中,单击 switch views

enter image description here

  1. 选择 folder view

enter image description here

  1. 可以向解决方案中添加单个文件夹

enter image description here

  1. 要回到解决方案资源管理器的常规视图,只需再次单击 switch views并选择解决方案。

这种方式似乎有一个局限性(注释来自@montonero) :

... 只需打开一个包含多个项目的解决方案,并尝试通过文件夹视图将项目移动到其他一些真正的文件夹中。问题是 VS 不会更新解决方案文件中项目的路径

您可以只同步新的 解决方案文件夹嵌套级别,也可以将名称与实际的文件系统 文件夹同步,这非常有效!

现有项目:

  • 创建实际的文件夹
  • 创建具有完全相同名称的解决方案文件夹
  • 将项目文件夹复制到新文件夹中(实际文件系统)
  • (在解决方案资源管理器中)-右击同一文件夹
  • 添加 = > 现有项目

添加新项目:

  • 创建解决方案文件夹
  • (右键单击解决方案) = > 添加新项目
  • 将要添加的项目名称下的 地点地址更改为解决方案文件夹中的完全相同的地址