如何在Visual Studio中"添加现有项"整个目录结构?

Ian*_*hes 759 ide visual-studio

我有一个独立于任何C#项目的独立文件集,它们位于复杂的嵌套目录结构中.

我想以这种格式将它们添加到我正在处理的ASP.NET Web应用程序中的不同目录中; 同时保留相同的结构.所以,我将文件夹复制到我的项目的目标位置,我试图"添加现有项目"只是为了丢失以前的文件夹层次结构.

通常我手动重新创建目录,一对一地复制,然后添加现有项目.在这种情况下,目录/项目太多了.

那么如何在Visual Studio 2008中添加现有目录和文件?

Dar*_*opp 732

将文件/文件夹从Windows资源管理器拖到解决方案资源管理器 它将全部添加.请注意,如果Visual Studio处于管理员模式,则此操作无效,因为Windows资源管理器是用户模式进程.

  • 在VS 2010中,在draggin获取文件夹后,选择项目中显示所有文件的选项.文件以"幻影"形式存在,右键单击文件夹并包含在项目中.然后他们将被添加 (114认同)
  • 这对我不起作用.它只是给我一个无效的放置目标的图标.下面显示的所有文件都很完美 (41认同)
  • @JohnPtacek:这适用于项目,但不适用于解决方案. (10认同)
  • 使用任务管理器杀死explorer.exe,以管理员身份启动它,然后即使以管理员身份运行,也可以拖放到Visual Studio. (8认同)
  • 这个答案对VS2010无效(至少据我所知).汤姆在7月12日的回答是VS2010中最好的解决方案 (2认同)
  • 不适合:VS 2012,2013,2015! (2认同)

Bra*_*non 543

为特定项目启用"显示所有文件"(您可能需要点击"刷新"才能看到它们)**.

不属于项目的文件夹/文件在项目树中显得略微"轻".

右键单击要添加的文件夹/文件,然后单击"包含在项目中".它将以递归方式将文件夹/文件添加到项目中.

**这些按钮位于迷你Solution Explorer工具栏上.

**确保您没有处于调试模式.

  • 这仅适用于单个项目,但不适用于解决方案. (28认同)
  • 提示 - 确保选择项目,而不是解决方案 - 然后你可以显示全部! (9认同)
  • 呃......那不是你应该放文件的地方.当然,它不会在根文件夹上找到文件. (7认同)
  • 看起来这只适用于比项目文件更深的文件,如果你将项目文件保存在一个文件夹中,这就不行了. (2认同)
  • 这仅在您希望添加的文件夹驻留在项目文件夹中时才有效.在我的情况下,我希望他们在其他地方(在项目之间共享).在XCode中,将文件夹结构从任何位置拖动到项目结构中会保留文件夹结构,而不是像VS那样展平它.看起来VS缺少这里的功能. (2认同)

Tom*_*Tom 89

在Solution Explorer中:

  1. 单击" 显示所有文件"(解决方案资源管理器顶部左侧的第二个图标).
  2. 找到要添加的文件夹.
  3. 右键单击并选择"包含在项目中"

我用它来安装HTML编辑器和第三方文件浏览器等附加组件.

  • 这与布兰农4年前的答案有什么不同? (15认同)
  • 这不解决原始问题,即*Solution*文件夹.它也曾被覆盖过. (7认同)
  • +1.我发现这个答案比其他答案更有帮助,因为它(相对)清楚地表明Show All Files是*icon*,而不是上下文菜单中的条目. (5认同)

ILI*_*DNO 35

我只想指出之前提供的两种解决方案,

  • 从Windows资源管理器拖放
  • 显示所有文件,然后包含在项目中.

不要做的问题是:

保留目录结构的同时包含在项目中.

至少在我的情况下(Windows 7上的C++/CLI项目Visual Studio 2013).

在Visual Studio中,一旦返回普通视图(不是" 显示所有文件"),您添加的文件都会列在项目的顶层.

是的,在磁盘上它们仍然存在于原来的位置,但在解决方案资源管理器中它们是松散的

除了在解决方案资源管理器中重新创建目录结构,然后在正确的位置添加现有项目之外,我没有找到解决方法.

  • 在这里使用2015; 仍然不保留文件夹结构.目瞪口呆. (12认同)
  • 同意,它仍然不同.我想知道像VS这样流行且昂贵的软件如何缺乏这样的功能.我认为在解决方案资源管理器和Windows资源管理器中有两个不同但相似的结构令人困惑... (2认同)

小智 22

我没有根据这些描述立即理解这一点,但这是我最后偶然发现的:

  1. 打开"显示所有文件" - 解决方案资源管理器工具栏上有一个图标
  2. 使用Windows资源管理器(不是解决方案资源管理器),将文件移动到您希望它们驻留的目录结构中
  3. 单击解决方案资源管理器工具栏上的"刷新"
  4. 您移动的文件应该在您放置它们的解决方案资源管理器树结构中显示为"幻影"
  5. 右键单击您的幻影文件或文件夹,然后单击"包含在项目中".将包含文件夹的所有内容

  • 这是用于解决方案文件夹,而不是项目。 (2认同)

Mar*_*una 16

下面是" 显示所有文件 " 的图标,仅供参考.

在此输入图像描述


Man*_*uri 12

在此输入图像描述

点击红色圆圈中的上方.您的文件夹将出现在Solution Explorer中.

右键单击您的文件夹 - > 包含在项目中.


Bje*_*ego 8

您可以更改项目XML以自动将现有子文件夹和结构添加到项目中,如NPM中的"node_modules":

这适用于较旧的MSBuild/Visual Studio版本

<ItemGroup>
   <Item Include="$([System.IO.Directory]::GetFiles(&quot;$(MSBuildProjectDirectory)\node_modules&quot;,&quot;*&quot;,SearchOption.AllDirectories))"></Item>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

对于当前的MSBuild/Visual Studio版本:

只需将它放在xml的节点中:

<Project>
</Project>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,只需将$(MSBuildProjectDirectory)\node_modules更改为您的文件夹名称.

  • 所以你是说有人可以制作一个插件来批量执行这个?因为我不会在 xml 中手动重新创建包含数十个文件夹的文件夹结构 (2认同)

小智 5

您需要将目录结构放在项目目录中.然后单击解决方案资源管理器工具箱顶部的"显示所有文件"图标.之后,添加的目录将显示出来.然后,您需要选择此目录,右键单击,然后选择"包含在项目中".


Wil*_* Jr 5

这就是我所做的:

  1. 右键单击解决方案 -> 添加 -> 现有网站...
  2. 选择您的网站所在的文件夹。只是网站的根文件夹。

然后所有内容都将添加到您的解决方案中,从文件夹到文件,以及这些文件夹中的文件。


Yan*_*ran 5

现在市场上有一个开源扩展,它似乎可以满足OP的要求:

文件夹到解决方案文件夹

文件夹到解决方案文件夹

如果它没有完全满足您的要求,可以使用代码,因此您可以修改它以适合您的场景。

华泰