Visual Studio: Add existing folder(s) to project

是否有办法将现有文件夹添加到 VisualStudio 项目中,以便不必按文件处理此文件?

剪辑

为了明确起见: 我想添加 参考文献而不是 副本

139652 次浏览

This answer applies to and , the most up to date versions at the time the question was asked and this answer was given. More recent versions have improved their handling and have other answers here. For someone using the old versions, this answer still applies.


回答 :

我不认为有,但如果您有一个文件夹中的所有文件,您可以添加多个文件在一个去。只需在添加文件对话框中标记它们。

你可以打开 Add Existing Item对话框,选择一组文件,点击 Add的按钮下拉菜单,然后选择 Add as a link。它将添加文件作为引用,而不会复制它们。

You can drag and drop the entire folder. If all files don't show you can repeat the drag'n'drop procedure for subfolders.

如果该文件夹及其内容已经创建,并且实际存在于项目下,您可以单击“显示所有文件”图标(在解决方案资源管理器窗口的顶部) ,然后当该文件夹显示为虚线图标时,右键单击它并选择“包含在项目中”,该文件夹及其所有内容将被添加。

  1. 右键单击项目,选择“新建解决方案资源管理器视图”,弹出一个窗口。
  2. 然后形成新窗口的工具栏(“解决方案探索窗口”) ,单击“显示所有文件”图标。
  3. 然后把感兴趣的文件夹加入到你的项目中..。

检查该文件夹是否在项目文件夹中,如果是:

  1. 单击“在解决方案资源管理器中显示所有文件”。

  2. 现在您可以在解决方案资源管理器中看到文件夹名称。右键单击文件夹-> “在项目中包含”。

  3. 如果文件夹外的项目,请将其复制到项目目录中的地方,我们希望它。

在 VisualStudio2019中,我无法从文件资源管理器或“显示所有文件”中拖放并添加它们。相反,在“文件资源管理器”中,右键单击并选择“复制”,然后单击 VisualStudio2019中的位置并右键单击并选择“粘贴”。将添加文件夹和子文件夹中的所有文件。

如果文件夹及其内容已经创建,并且在项目下实际存在,那么点击项目 enter image description here上的视图,你就可以看到所有的文件夹和文件,你只需要复制文件,点击同一个文件夹视图中的解决方案,然后粘贴到这里

如果你在 VS 2019社区版工作,我发现你可以:

  1. 打开要添加到文件资源管理器中的任何文件夹的父文件夹
  2. 右键单击并复制该文件夹
  3. 转到可视化工作室中的解决方案资源管理器
  4. Right-click then paste the folder wherever you want to in the solution tree

VS 2019

单击解决方案资源管理器窗口顶部的“显示所有文件”图标。

'Show All Files' icon

然后,所选项目的文件夹/文件将显示为虚线图标。您可以右键单击它们中的任何一个,并选择 include in project将它们包含在项目中。

For solution folders, click the 'Show All Files' icon then first exclude the desired folders/files and then include them.

这已经是一段时间以来,因为这是最初发布,但这里是一个解决方案文件夹,不在一个项目的替代答案。如果你只想从 Visual Studio 中查看物理文件,而不需要在解决方案资源管理器默认视图中查看它们,那么点击开关视图按钮,选择文件夹视图,即使它们不出现在解决方案资源管理器默认视图中,在解决方案根文件夹下的任何物理目录/目录也会出现在这里。

folder view

If however, you want to add a folder tree that isn't too large as a virtual solution directory/directories to match your existing tree structure, do that and and then "add the existing" physical files to the virtual directory/directories. If the physical directory exists in your solution directory it will not copy the files - it will link directly to the physical files but they will appear as part of the solution virtual directories.

您可以使用以下扩展名添加解决方案文件夹,该文件夹将具有与现有文件夹相同的名称和相同的内容,而不需要在文件系统中移动该文件夹。

解决方案文件夹

And here's the link for more information:

Https://marketplace.visualstudio.com/items?itemname=ceciliawiren-ceciliasharp.foldertosolutionfolder

Kburnik 的回答 在我的用例中非常有效,但是对于那些需要一种可编写脚本的方法来恢复大量文件夹层次结构的人来说,你可以修改 .*proj文件来重新包含文件夹和文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ...>
...
<ItemGroup>
<Compile Include="Path\To\File1.ext" />
<Compile Include="Path\To\File2.ext" />
...
</ItemGroup>
<ItemGroup>
<Folder Include="Only\Empty\Folders\Need\To\Be\Listed\Here" />
...
</ItemGroup>

Just make sure that before you do this, you save the .*proj file if it's still open in Visual Studio.

也许你们中的一些人并不是第一次被问到这个问题的时候出生的!

如果您有外部目录,您可以将它们作为“网站”添加到解决方案中。这使您能够搜索解决方案,并轻松地向网站添加新文件的所有好处。它不必包含 html,它可以是一组 word 文档,例如。 例如,我得到了一个单一的解决方案,其中包含了我曾经处理过的每个 sql 和 Oracle 查询,或者是从一个同事那里获得的。为什么?因为当您尝试编写新查询时,很难在不同的数据库中保持相似的字段和表名。

这也适用于 TFS。

@ Mark 的回答很好,但是如果有成百上千的文件,那么添加所有的文件就会很麻烦。另外,它不提供新的文件。

类还有另一种方法。Csproj 文件。我使用它来添加子模块的一部分内容,该子模块没有。自己的 csproj 文件。

Note that I have used the <Content /> tag, as I did not need any of the linked content during compilation.

<ItemGroup>
<Content Include="..\my\submodule\directory\**" Link="Directory\In\Main\Project\%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>

可以拖放项目中的整个文件夹或缺少的文件夹。

如果您的文件夹存在于另一个项目中,但您希望将该文件夹及其内容仅添加到另一个项目中 去文件夹的位置 ——复制所需的文件夹 -- go back to your current project -- right click on the project and then just paste it.

folder will be added in your current project. 您可能需要修复复制文件的命名空间。