如何将现有目录树添加到Visual Studio中的项目?

这个问题很简单。 我不是在Visual Studio中创build文件夹,而是在文件系统上为我的项目创build一个目录结构。 如何在项目中包含所有文件夹和文件,保持结构?

如果我在名为Services的文件夹中添加“现有文件”并导航到目录结构中的文件.. Services> AccountManagement> CreateAccount.cs,它将出现在Visual Studio中,如下所示:Services> CreateAccount.cs。 我不想要这个。

我已经完成了一个完整的目录结构,因为我模仿我们的客户开发人员使用相同的结构进行组织。 如何将所有文件夹和文件添加到Visual Studio中的项目? 还是我必须做大多数微软用户所做的工作,并“忍受”,并通过Visual Studio重新创build每个文件夹?

您需要将您的目录结构放在您的项目目录中。 然后单击“解决scheme资源pipe理器”工具箱顶部的“显示所有文件”图标。 之后,添加的目录将显示出来。 然后你需要select这个目录,右键单击,然后select“包含在项目中”。

在这里输入图像描述

在这里输入图像描述

您也可以将文件夹从Windows资源pipe理器拖放到Visual Studio解决scheme窗口中。

复制和粘贴

要添加一个文件夹,所有的子目录和文件,我们也可以复制和粘贴。 例如,我们可以:

  1. 右键单击该文件夹上的Windows资源pipe理器,然后复制具有多个文件和文件夹的文件夹。

  2. 然后在Visual Studio解决scheme资源pipe理器中,右键单击目标文件夹,然后单击粘贴。

  3. 可选添加到TFS; 然后在顶部文件夹中右键单击并检入到TFS以检入所有子文件夹和文件。

在Visual Studio 2015中,这是你如何做到的。

如果您想自动包含特定文件夹下的所有后代文件:

<Content Include="Path\To\Folder\**" /> 

这可以被限制为仅包含指定path内的文件:

 <Content Include="Path\To\Folder\*.*" /> 

甚至只有具有指定扩展名的文件:

 <Content Include="Path\To\Folder\*.jpg" > 

参考: http : //jamesrpatterson.com/blog/automatic-include-in-project-for-visual-studio

您可以使用符号链接。 这使得修改一个项目中的文件在另一个项目中修改它(因为它实际上是相同的文件)。

去做这个:

  1. 以pipe理员身份打开cmd提示符
  2. mklink / d [当前项目目录名称] [应该指向的其他项目中的目录]

这有它的缺点和缺陷,但我偶尔使用它需要不同名称的重复库。

编辑Anoop:添加到Visual Studio的步骤:

  1. 使用上述步骤在项目文件夹中创build链接。
  2. 在Visual Studio中…在Solution Explorer中select项目。
  3. 在解决scheme资源pipe理器的顶部…单击显示所有文件button(如果已经激活,可能需要点击两次)。
  4. 该链接现在将显示在您的项目中…右键单击并selectInclude In Project。

这些是我遵循的步骤,适用于几个不同的项目。

在Visual Studio 2013中,右键单击文件夹时无法使“包含在项目中”工作。 什么工作是扩大文件夹,select所有的文件,然后select“包含在项目”。 这是非常繁琐的,因为你必须一个接一个地做每个文件夹(但是至less你可以一次完成每个文件夹中的所有文件),它似乎存储文件path(你可以通过查看文件的属性并查看“相对path”选项。)

我希望使用这个在Visual Studio Installer项目中部署一些数据文件,它似乎拿起包含的文件并保留它们的path。

据我所知,在VS2010中唯一的方法就像拖放方法一样。 右键单击要添加项目的解决scheme。 应用程序菜单将有一个添加…项目。 打开它,您会发现其中一个选项是将现有的项目添加到解决scheme。

在打开的对话框中,导航到包含解决scheme的项目文件的文件夹并select它。 VS将作为导入该项目文件的一部分,还将导入整个目录,并假定该项目的任何下级目录。

由于这确实需要一个现有的项目文件,所以直到该树被转换为一个项目之前,不可能导入一个目录树。

为了扩展雨辰的答案 ,你可以包含文件和path作为链接。 这与添加现有项目不同,因为它不会在项目的文件夹结构中创build额外的副本。 如果你想在一个不同的地方使用一个规范的文件夹/文件等,但是你只想维护一个版本/副本,这是非常有用的。

以下是可以添加到*.csproj文件以创build链接的示例

 <Compile Include="$(Codez)\z.Libraries\Common\Strings\RegexExtensions.cs"> <Link>Helpers\RegexExtensions.cs</Link> </Compile> <Compile Include="..\..\z.Libraries\MoreLINQ\MoreLinq\ExceptBy.cs"> <Link>Helpers\ExceptBy.cs</Link> </Compile> <Content Include="C:\Codez\Libs\Folder\OtherFolder\**\*.*"> <Link>%(RecursiveDir)%(Filename)%(Extension)</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> 

$(Codez)是我定义的一个Windows环境variables,您可以以相同的方式使用内置的环境variables。

最后一个示例组是我在最终输出中需要的一组内容文件。 请参阅https://stackoverflow.com/a/11808911/492以及其他的答案和链接。;

更多MSBuild信息在https://msdn.microsoft.com/en-us/library/bb629388.aspx