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


765

我有一套完全不属于任何C#项目的独立文件,它们位于复杂的嵌套目录结构中。

我想以这种格式将它们添加到我正在处理的ASP.NET Web应用程序中的其他目录中;同时保留相同的结构。因此,我将文件夹复制到项目的目标位置,然后尝试“添加现有项目”,只是丢失了先前的文件夹层次结构。

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

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


44
对于大多数人(包括我)来说,这并不明显,这是对Visual Studio的可悲证明。
皮特·阿尔文

22
@Pete Alvin我对Visual Studio有很多可悲的遗嘱,但是由于我花了很多时间在其他IDE上,所以我对它更加感激。
Freek Nortier

4
Visual Studio并不完美,但是我几乎使用了所有可用的IDE。如果是最好的。Eclipse甚至还没有关闭,Xcode可能是唯一接近的Eclipse。
user1127081

2
@ user1127081:我要第二个。Visual Studio远非完美,但我几乎在所有开发和目标OS中都使用了其他所有IDE,它们的处境更加糟糕。我还必须同意Xcode显然是迄今为止最好的,但是只有在Xcode 3和Xcode 4之间批准了很多之后,它才变得如此。Eclipse只是一场噩梦。
Kaiserludi

Answers:


737

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


42
这对我不起作用。它只是给我一个无效放置目标的图标。尽管下面的所有文件都可以正常显示
Cine 2010年

115
在VS 2010中,在Draggin获得文件夹之后,选择选项以显示项目中的“显示所有文件”。这些文件以“重影”形式存在,右键单击该文件夹并包含在Project中。然后将它们添加
John Ptacek

10
@JohnPtacek:这在项目中有效,但在解决方案中无效。

2
这个答案对VS2010无效(至少据我所知)。Tom在12/7/10的答案对我来说是VS2010中最好的解决方案
BLSully 2012年

8
使用任务管理器杀死explorer.exe,以管理员身份启动它,然后即使它以管理员身份运行,也可以将其拖放到Visual Studio。
xander 2014年

545

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

不在项目中的文件夹/文件在项目树中显示为“较浅”

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

**这些按钮位于迷你解决方案资源管理器工具栏上。

**确保您未处于调试模式。


2
看来,这仅适用于比您的项目文件更深的文件,如果您将项目文件单独放在一个文件夹中,则将无法使用。
Danny Parker

28
这仅适用于单个项目,而不适用于解决方案。

7
h ...那不是您应该放置文件的地方。当然,不会在根文件夹上方找到文件。
Bluebaron 2012年

3
仅当您希望添加的文件夹驻留在项目文件夹中时,此选项才起作用。就我而言,我希望它们位于其他位置(在项目之间共享)。在XCode中,将文件夹结构从任何位置拖动到项目结构中都会保留文件夹结构,而不是像VS那样将其展平。看起来VS在这里缺少功能。
Mattijs

9
提示-确保选择项目,而不是解决方案-然后,您可以全部显示!
niico 2013年

89

在解决方案资源管理器中:

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

我用它来安装诸如HTML编辑器和第三方文件浏览器之类的附件。


16
这与4年前的布兰农的答案有何不同?
ToolmakerSteve

7
这不能解决解决方案文件夹的原始问题。之前也已对此进行了介绍。
user2864740'2

@ToolmakerSteve:不同之处在于它与Gant从7年前开始的解决方案相同。stackoverflow.com/questions/392473/...
Veverke

强烈推荐此解决方案,因为当签入冲突的csproj文件且tfs忽略冲突并覆盖时,它也将提供帮助
John Demetriou

6
+1。我发现此答案比其他答案更有用,因为它(相对)使“显示所有文件”是一个图标,而不是上下文菜单上的条目,这一点很明确。

35

我只想指出以前提供的两个解决方案,

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

不要执行问题要求的操作:

保留目录结构时包括在项目中。

至少对于我而言不是(Windows 7上的C ++ / CLI项目Visual Studio 2013)。

在Visual Studio中,一旦回到普通视图(不是Show All Files),添加的文件都将列在项目的顶层。

是的,它们仍然在磁盘上,但在解决方案资源管理器中它们是松散的。

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


我看到了相同的行为,VS2010,C ++。
Radim Cernej 2014年

是的,在Visual Studio 2010中也是如此。对于我来说,它甚至不添加没有目录结构的文件,只是该文件夹结构中的第一个文件,而不包含任何子文件夹。
乔纳斯(Jonas)2015年

2
同意,但仍然不同。我不知道像VS这样的流行和昂贵的软件如何缺少这种功能。我认为在解决方案资源管理器和Windows资源管理器中具有两个不同但相似的结构非常令人困惑...
Janis 2015年

12
在这里使用2015;仍然不保留文件夹结构。目瞪口呆。
Toby Deshane '16

使用2015 Update 3,Bannon和Tom的方法获得了成功。所有嵌套的文件夹都按预期进入。
约翰·哈顿

22

根据这些描述,我并没有立即理解这一点,但最终我偶然发现了以下内容:

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

2
这是用于解决方案文件夹,而不是项目。
StingyJack

更新:有一个在VS2019没有“refres”按钮
刘昊


13

在此处输入图片说明

单击上方的红色圆圈。您的文件夹将出现在解决方案资源管理器中。

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


9

您可以更改项目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>

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

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

<Project>
</Project>

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


是的,有时手动编辑*。* proj文件将使您到达想要的位置。
克里斯·奥

1
所以您是说有人可以制作一个插件来批量执行此操作?因为我不会在xml中用手重新创建包含数十个文件夹的文件夹结构
Spectraljump

正是我要找的东西
Vitaliy Kalinin

5

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


1
这几乎是公认的答案所建议的内容,也是其下的其中一项评论。
凯夫

4

这是我的工作:

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

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


4

最后,Visual Studio 2017允许用户单击一下即可导入整个目录。Visual Studio 2017具有一项新功能“打开文件夹 ”,即使没有将其另存为解决方案,它也可以打开整个文件夹。可以使用以下方法导入源代码。

  1. 菜单文件打开 →*文件夹(Ctrl+ Shift+ O
  2. devenv.exe <source folder>

它甚至支持构建和调试CMake项目。

使用“打开文件夹”将C ++代码库带入Visual Studio



2

我发现的一个巧妙技巧是,如果转到“添加现有...”,则可以将文件夹从打开的对话框拖到解决方案中。

我可以在管理模式下自动打开Visual Studio,所以这对我来说是个不错的解决方法,因为我不想为了使它正常工作而必须撤消该操作。


1

对我有用的是将文件夹拖到Visual Studio中,然后右键单击该文件夹,然后选择“在文件资源管理器中打开文件夹”。然后选择全部并将它们拖到Visual Studio中的文件夹中。


0

在Windows 7中,您可以执行以下操作:

右键单击您的项目,然后选择“添加->现有项目”。在出现的对话框中,浏览到要添加的目录的根目录。在右上角有一个搜索框。键入*.cs*.cpp,无论您要添加的文件类型如何。搜索完成后,选择所有文件,单击“添加”并等待一会儿...


5
这不会保持目录结构-只是将所有内容放在您单击添加的文件夹中。
2014年

0

我发现最干净的方法是在目标文件夹中创建一个新的类库项目,并将其所有构建输出重定向到其他位置。它仍然将.csproj文件保留在该文件夹中,但是它确实允许您在Visual Studio中查看它并选择要包含在项目中的文件。


-3

令人讨厌的是Visual Studio本身不支持此功能,但是CMake可以解决此问题而生成Visual Studio项目。

除此之外,只需使用Qt Creator。然后,它可以导出Visual Studio项目。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.