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

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

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

有帮助吗?

解决方案

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

其他提示

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

在Visual Studio 2015年,这是你怎么做。

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

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

这可以被限制到包括指定的路径内唯一的文件:

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

甚至只在特定的扩展名的文件:

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

参考: http://jamesrpatterson.com/blog/自动包括式项目换视觉工作室

复制粘贴.

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

  1. 在 Windows 资源管理器中右键单击该文件夹,然后复制包含许多文件和文件夹的文件夹。

  2. 然后在 Visual Studio 解决方案资源管理器中,右键单击目标文件夹并单击“粘贴”。

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

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

去做这个:

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

这有它的缺点和陷阱,但我有时会用它来处理需要不同名称的重复库。

编辑阿努普:添加到 Visual Studio 的步骤:

  1. 使用上述步骤在项目文件夹中创建链接。
  2. 在视觉工作室中...在解决方案资源管理器中选择项目。
  3. 在解决方案资源管理器的顶部...单击“显示所有文件”按钮(如果已激活,可能需要单击两次)。
  4. 该链接现在将显示在您的项目中...右键单击并选择包含在项目中。

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

要扩大雨辰的答案,您可以包括文件名和路径作为一个链接。这不是一回事加入现有的项目,因为它不会使你的项目的文件夹结构的额外副本。如果你想要一个规范的文件夹/文件等,以在很多不同的地方使用,但您只希望维持一个版本/它的复制品是很有用的。

下面是什么,你可以添加到*.csproj文件来创建链接的示例

<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)是我所定义的视窗环境变量,可以以相同的方式使用内置的环境变量。

最后一个例子组是一堆我需要在最终输出的内容文件的。请参见 https://stackoverflow.com/a/11808911/492 和其他问题和环节有更多关于这一点。

https://msdn.microsoft.com/en-

更多的MSBuild信息我们/库/ bb629388.aspx

在Visual Studio 2017年,你们之间的解决方案视图的和的文件夹视图的来回切换。我认为这是一个更好的选择,因为它会保持溶液清洁。我用这个编辑的.gitignore,.MD文件等。

我想我找到了一种方法与编译做到这一点包括=“\码***。CS” 我想是递归包括在我的代码文件夹中的代码。

下面是该项目文件的示例。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0" DefaultTargets="BuildTarget">
    <PropertyGroup>
        <OutputType>Library</OutputType>
    </PropertyGroup>
    <PropertyGroup>
        <StartupObject />
    </PropertyGroup>
    <PropertyGroup>
        <RootNamespace>Autogen</RootNamespace>
    </PropertyGroup>
    <ItemGroup>
        <Compile Remove="@(Compile)" />
        <Compile Include=".\Code\**\*.cs" />
    </ItemGroup>
    <Target Name="BuildTarget">
        <Message Text="Build selected" Importance="high"/>
    </Target>
</Project>

在Visual Studio 2013,我不能让“纳入工程”工作的文件夹上时右击。什么做的工作是扩大该文件夹,选择所有文件,然后选择“包含的项目”。这是因为你必须做的每个文件夹一个接一个(但至少你可以在一个去做的每个文件夹中的所有文件)相当繁琐,而且它似乎保存文件路径(您可以通过该文件查看属性看到这并且在看“相对路径”选项。)

我希望用这个来部署在Visual Studio安装项目的一些数据文件,它似乎拿起包含的文件和维护他们的路径。

据我所知,在VS2010做到这一点的唯一方法是如同对拖放方法。右键单击要添加一个项目,该项目的解决方案。应用程序菜单会有一个附加...项。打开,你会发现其中一个选项是将现有项目添加到解决方案。

在打开的对话框中,导航到包含溶液中的项目文件的文件夹并选择它。 VS会,作为进口该项目文件的一部分,也导入整个目录,我承担任何下级目录这是该项目的一部分。

由于这确实需要一个现有的项目文件,它不会是不可能导入一个目录树,该树已被转换为一个项目。

我没有找到令我满意的答案,所以我自己想办法。

如果您想将外部源代码添加到您的项目中并且不想复制整个代码,这里就是您的答案。我对其他 git 有很多依赖,它们每小时更新一次,如果不是每分钟更新一次。我无法每小时复制一次以进行同步。这是您需要做的。

假设这是结构:

/根/projA/src

/根/projA/包括

/根/projB/src

/根/projB/包括

/根/yourProj/src

/根/yourProj/包括

  1. 启动您的 VS 解决方案。
  2. 右键单击解决方案正下方的项目名称。
  3. 然后点击“添加”、“新建过滤器”,将projA命名为“projA”。
  4. 右键单击“projA”,单击“添加”、“新建过滤器”,输入名称“src”
  5. 右键单击“projA”,单击“添加”、“新建过滤器”,输入名称“includes”
  6. 右键单击“projA”/“src”,单击“添加”、“现有项目”,然后浏览到 /root/projA/src 添加所有源代码或逐一添加您想要的源代码。
  7. 对“projA”/“includes”执行相同的操作
  8. 对 projB 执行同样的操作。现在,您之外的外部/现有项目存在于您的解决方案/项目中。VS会将它们一起编译。这是一个技巧。由于 projA 和 projB 是项目下的虚拟文件夹,编译器可能找不到 projA/includes。

  9. 如果没有找到 projA/includes,则右键单击该项目,选择“属性”。

  10. 导航到“C/C++”。编辑“其他包含目录”,添加您的 projA/include,例如“../projA/includes”相对路径。

需要注意的是,如果存在重复的包含/头文件,则“头文件”上的“从项目中排除”实际上不起作用。这是VS的一个bug。

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

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

  • 类库项目

  • 控制台应用程序

  • ASP.NET Core Web 应用程序

  • 任何类型的 .NET Core 项目

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

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

进一步阅读:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top