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

Mic*_*tum 108 visual-studio

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

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

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

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

Mic*_*ael 42

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

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

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

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

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

  • 以下是完整说明:右键单击解决方案 - >"添加" - >"新建网站..." - >(我选择"ASP.NET空网站").更改位置后,不要忘记将"\ MyName"附加到路径,否则单击"确定"将只是重新打开对话框.然后右键单击您的解决方案 - >"属性" - >"配置属性" - >取消选中Web项目的"构建". (4认同)

小智 40

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

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

  • ...以及 VS 2022 - (12认同)
  • ...以及 VS 2019 (8认同)
  • VS 最糟糕的事情之一。为什么 MS 不保留 Sln 文件夹作为选项,但还允许将 REAL 文件夹添加到解决方案中。很烦人。文件系统可以工作,为什么要重新发明轮子(作为一个正方形)。 (7认同)
  • 截至 VS 2017,这似乎仍然是准确的。 (4认同)
  • 您可以更改项目的行为:/sf/answers/4620344921/ (2认同)

Ode*_*ode 25

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

  • 这对我有帮助,所以我在文件夹视图中创建了一个文件夹,然后我添加了一个解决方案文件夹并将项目添加为该文件夹的子项。对我来说真的没有意义,但这个答案帮助我 (4认同)
  • 这很有用,但在“源代码视图”中,您丢失了项目上的所有右键单击快捷方式,即“管理 NuGet 包”。 (2认同)
  • 为什么只有 C++ 解决方案或项目的行为与其他语言不同? (2认同)
  • 这正是我想要的。谢谢! (2认同)

Arm*_*and 10

您只需将新的解决方案文件夹嵌套级别和名称与实际的文件系统文件夹同步即可,它的工作方式就像一个魅力!

现有项目:

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

添加新项目:

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

  • @GrantRobertson 我做了一些编辑。希望能帮助到你。 (2认同)
  • 我可以确认这在 VS2019 中有效!我们这些不断改变对文件夹结构的想法的人最终会经常遇到这个问题。我希望事情能更容易一些。请注意,如果您已将项目置于源代码管理中,则在此之后签入时您将需要做更多工作。 (2认同)

Swa*_*Fox 8

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


rse*_*nna 8

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

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

但是一段时间之前,Visual Studio引入了一种新的项目类型:共享项目(扩展名为.shproj)。默认情况下,不会编译该项目类型,而仅在(且仅当)另一个项目引用它时才进行编译。

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

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

所以基本上做到这一点:

  • 在您的解决方案中创建一个新文件夹。
  • 在此新文件夹的根目录下添加一个新的.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>
Run Code Online (Sandbox Code Playgroud)

这.shproj文件将保持跟踪的任何文件,在任何新的子文件夹DockerDev在我的解决方案文件夹。

据我所知,此解决方案的工作原理与OP所要求的非常相似:它将作为对文件夹的不可编译的引用而工作,并且将自动反映对其所做的任何更改。


小智 7

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

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


mar*_*gle 6

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

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

在此输入图像描述

  1. 选择folder view

在此输入图像描述

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

在此输入图像描述

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

使用这种方式似乎有一个限制(来自@montonero的评论):

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


Ala*_*lan 5

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