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

我有一组独立的文件,它们根本不隶属于任何C#项目,它们驻留在复杂的嵌套目录结构中。

我想将它们以这种格式添加到我正在使用的ASP.NETWeb应用程序中的不同目录中;同时保留相同的结构。因此,我将文件夹复制到我的项目的目标位置,并尝试“添加现有项目”,但却丢失了以前的文件夹层次结构。

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

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

257881 次浏览

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

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

项目树中不属于项目略显“轻盈”的文件夹/文件。

右键单击您要添加的文件夹/文件,然后单击“纳入项目”。它将递归地将文件夹/文件添加到项目中。

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

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

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

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

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

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

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

我用它来安装附加组件,如超文本标记语言编辑器和第三方文件浏览器。

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

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

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

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

不要做问题要求的事情:

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

至少在我的情况下不是(C++ /CLIWindows 7上的Visual Studio 2013项目)。

在Visual Studio中,一旦您回到正常视图(不是显示所有文件),您添加的文件都将在项目的顶层列出。

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

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

您可以更改项目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更改为您的文件夹名称。

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

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

下面是“显示所有文件”的图标,只是为了方便参考。

在此输入图片描述

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

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

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

我有我的Visual Studio自动在管理模式下打开,所以这对我来说是一个很好的解决方法,因为我不想为了让它工作而撤消它。

最后,Visual Studio 2017允许用户只需单击一下即可导入整个目录。Visual Studio 2017有一个新功能”打开文件夹",可以打开整个文件夹,即使不需要将其保存为解决方案。可以使用以下方法导入源代码。

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

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

使用"打开文件夹"将您的C++代码库带到Visual Studio

这就是我所做的:

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

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

在此处输入图片描述

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

右键单击您的文件夹->列入项目

现在市场上有一个开源扩展,它似乎做了OP要求的事情:

解决方案文件夹

文件夹到解决方案文件夹

如果它不能完全按照您的要求执行,则可以使用代码,因此您可以对其进行修改以适应您的场景。

HTH

这已经有一段时间了,因为这是最初发布的,但这里有一个替代的答案。如果您只关心能够从Visual Studio中查看物理文件,并且不一定需要在解决方案资源管理器默认视图中查看它们,那么单击切换视图按钮并选择文件夹视图,并且解决方案根文件夹下的任何物理目录/目录将出现在此处,即使它们没有出现在解决方案资源管理器默认视图中。

文件夹视图

但是,如果您想添加一个不太大的文件夹树作为虚拟解决方案目录/目录以匹配现有的树结构,请执行此操作,然后将现有物理文件“添加”到虚拟目录/目录。如果物理目录存在于解决方案目录中,它不会复制文件-它将直接链接到物理文件,但它们将作为解决方案虚拟目录的一部分出现。