问题其实很简单。我没有在Visual Studio中创建文件夹,而是在文件系统上为项目创建了一个目录结构。我如何包括所有的文件夹和文件在一个项目,保持结构?

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

我已经制定了一个完整的目录结构,因为我正在模仿我们的客户开发人员使用相同的结构进行组织。如何在Visual Studio中将所有文件夹和文件添加到项目中?或者我必须像大多数微软用户那样“忍受”,通过Visual Studio重新创建每个文件夹?


当前回答

您还可以将文件夹从Windows资源管理器拖放到Visual Studio解决方案窗口中。

其他回答

复制粘贴。

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

右键单击Windows资源管理器上的文件夹,并复制文件夹上的许多文件和文件夹。 然后在Visual Studio Solution资源管理器中,右键单击目标文件夹并单击粘贴。 可选添加到TFS;然后在顶部文件夹右键单击并签入TFS以签入所有子文件夹和文件。

我找不到令我满意的答案,所以我自己琢磨。

如果你想向你的项目添加外部源代码,而不想复制整个代码,这里是你的答案。我有很多依赖于其他gits,他们每小时更新,如果不是一分钟。我不能每小时拷贝一次来同步。以下是你需要做的。

假设这是结构:

/root/projA/src

/root/projA/includes

/root/projB/src

/root/projB/include

/root/yourProj/src

/root/yourProj/include

Start your VS solution. Right-click the project name right below the Solution. Then click the "Add", "New Filter", put the name "projA" for projA. Right-click on the "projA", click "Add", "New Filter", enter name "src" Right-click on the "projA", click "Add", "New Filter", enter name "includes" Right-click "projA"/"src", click "Add", "Existing Item", then browse to the /root/projA/src to add all source codes or one by one for the ones you want. Do same for "projA"/"includes" Do same for projB. Now the external/existing projects outside yours are present in your solution/project. The VS will compile them together. Here is an trick. Since the projA and projB are virtual folders under your project, the compiler may not find the projA/includes. If it doesn't find the projA/includes, then right click the project, select the "Properties". Navigate to "C/C++". Edit "Additional Include Directories", add your projA/include as such "../projA/includes", relative path.

一个警告,如果有重复的包含/头文件,“头文件”上的“排除项目”实际上不起作用。这是VS中的一个bug。

Visual Studio 2017及更新版本支持新的轻量级.csproj格式,该格式被称为“SDK格式”。这种格式的优点之一是,默认情况下,文件是通配符,而不是包含包含的文件和文件夹列表。因此,使用这种新格式,您的文件和文件夹-添加在资源管理器或命令行-将自动拾取!

SDK格式的.csproj文件目前适用于以下项目类型:

类库项目 控制台应用程序 ASP。NET Core web应用程序 .NET任何类型的核心项目

要使用新格式,请创建一个新的。net Core或。net Standard项目。因为即使在Visual Studio 2019中,完整的. net框架模板也没有更新,要创建. net类库,请选择. net标准库模板,然后编辑项目文件以针对您选择的框架版本(新风格的项目格式可以在Visual Studio中编辑-只需在解决方案资源管理器中右键单击项目并选择“编辑项目文件”)。例如:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>
</Project>

进一步阅读:

旧csproj到新csproj: Visual Studio 2017升级指南 揭开SDK项目的秘密 MSDN: .NET Core的csproj格式的补充

在Visual Studio 2015中,就是这样做的。

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

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

这可以限制为只包含指定路径下的文件:

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

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

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

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