【问题标题】:How do I "Add Existing Item" an entire directory structure in Visual Studio?如何在 Visual Studio 中“添加现有项”整个目录结构?
【发布时间】:2010-09-08 15:17:45
【问题描述】:

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

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

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

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

【问题讨论】:

标签: visual-studio ide


【解决方案1】:

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

【讨论】:

  • 这对我不起作用。它只是给了我一个无效放置目标的图标。虽然下面的显示所有文件完美无缺
  • 在VS 2010中,拖入文件夹后,选择Show All Files in the project。文件以“幻影”形式存在,右键单击文件夹并包含在项目中。然后将添加它们
  • @JohnPtacek:这适用于项目,但不适用于解决方案。
  • 这个答案对 VS2010 无效(至少据我所知)。汤姆在 2012 年 7 月 10 日的回答是 VS2010 中对我来说最好的解决方案
  • 使用任务管理器杀死explorer.exe,以管理员身份启动,然后你可以拖放到Visual Studio,即使它以管理员身份运行。
【解决方案2】:

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

不属于您的项目的文件夹/文件在项目树中显得稍微“轻一些”

右击您要添加的文件夹/文件,然后点击“包含在项目中”。它将递归地将文件夹/文件添加到项目中。

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

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

【讨论】:

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

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

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

我用它来安装附加组件,例如 HTML 编辑器和第三方文件浏览器。

【讨论】:

  • 这与布兰农 4 年前的回答有何不同?
  • 这并不能解决 Solution 文件夹的原始问题。之前也有介绍过。
  • @ToolmakerSteve:不同之处在于它与 7 年前 Gant 的解决方案相同。 stackoverflow.com/questions/392473/…
  • 强烈推荐此解决方案,因为它还有助于在签入冲突的 csproj 文件并且 tfs 忽略冲突并覆盖
  • 是左数第三个,不是第二个
【解决方案4】:

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

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

不要做问题所要求的:

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

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

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

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

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

【讨论】:

  • 我看到了同样的行为,VS2010,c++。
  • 是的,在 Visual Studio 2010 中也是如此。它甚至不会为我添加没有目录结构的文件,只是该文件夹结构中的第一个文件,而不是任何子文件夹。
  • 同意,还是不一样。我想知道像 VS 这样流行且昂贵的软件怎么会缺少这样的功能。我认为在解决方案资源管理器和 Windows 资源管理器中有两个不同但相似的结构相当令人困惑......
  • 这里使用2015;仍然不保留文件夹结构。惊呆了。
  • 使用 2015 Update 3,刚刚通过 Bannon 和 Tom 的方法取得了成功。所有嵌套文件夹都按预期进入。
【解决方案5】:

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

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

【讨论】:

  • 这是一个解决方案文件夹,而不是一个项目。
  • 更新:VS2019中没有“refres”按钮
【解决方案6】:

下面是“显示所有文件”的图标,仅供参考。

【讨论】:

    【解决方案7】:

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

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

    【讨论】:

      【解决方案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>
      

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

      只要放在xml的节点中即可:

      <Project>
      </Project>
      

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

      【讨论】:

      • 是的,有时手动编辑 *.*proj 文件会让你到达你想去的地方。
      • 所以你是说有人可以做一个插件来批量做这个?因为我没有在 xml 中手动重新创建包含数十个文件夹的文件夹结构
      • 正是我想要的
      【解决方案9】:

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

      【讨论】:

      • 这几乎是公认的答案所暗示的,也是它下面的 cmets 之一。
      【解决方案10】:

      这就是我的工作:

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

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

      【讨论】:

        【解决方案11】:

        最后,Visual Studio 2017 允许用户一键导入整个目录。 Visual Studio 2017 具有一个新功能“打开文件夹”,允许打开整个文件夹,甚至无需将其保存为解决方案。源代码可以通过以下方式导入。

        1. 菜单 文件打开 → *文件夹 (Ctrl + Shift + O)
        2. devenv.exe &lt;source folder&gt;

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

        Bring your C++ codebase to Visual Studio with “Open Folder”

        【讨论】:

          【解决方案12】:

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

          Folder To Solution Folder

          如果它不完全符合您的要求,代码是可用的,因此您可以修改它以适合您的场景。

          HTH

          【讨论】:

          • 扩展在 VS 15.9.13 2017 版本上对我不起作用
          【解决方案13】:

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

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

          【讨论】:

          • 不保留子目录结构,但有点工作。另一个好处是管理员模式没有障碍......
          【解决方案14】:

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

          【讨论】:

            【解决方案15】:

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

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

            【讨论】:

            • 这不会维护目录结构 - 它只是将所有内容放在您单击添加的文件夹中。
            【解决方案16】:

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

            【讨论】:

              【解决方案17】:

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

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

              【讨论】:

              【解决方案18】:

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

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

              【讨论】:

                猜你喜欢
                • 2010-09-28
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-12-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多