首页 文章

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

提问于
浏览
651

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

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

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

10 回答

  • 30

    我想我找到了一种方法来使用Compile Include =“ . \ Code *** . cs”我想要的是在我的Code文件夹下递归包含代码 .

    这是项目文件样本 .

    <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>
    
  • 1137

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

    去做这个:

    • 以管理员身份打开cmd提示符

    • mklink / d [当前项目目录名] [应该指向的其他项目中的目录]

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

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

    • 使用上述步骤在项目文件夹中创建链接 .

    • 在Visual Studio中...在解决方案资源管理器中选择项目 .

    • 在解决方案资源管理器的顶部...单击“显示所有文件”按钮(如果已激活,则可能需要单击两次) .

    • 此链接现在将显示在您的项目中...右键单击并选择“包含在项目中” .

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

  • 6

    据我所知,在VS2010中执行此操作的唯一方法类似于拖放方法 . 右键单击要添加项目的解决方案 . 应用程序菜单将有一个add ...项目 . 打开它,您会发现其中一个选项是将现有项目添加到解决方案中 .

    在打开的对话框中,导航到包含解决方案的项目文件的文件夹,然后选择它 . 作为导入该项目文件的一部分,VS将导入整个目录,并且我假设任何属于该项目的下级目录 .

    由于这确实需要现有的项目文件,因此在将树转换为项目之前导入目录树是不可能的 .

  • 0

    Copy & Paste .

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

    • 右键单击该文件夹上的Windows资源管理器,然后单击包含许多文件和文件夹的文件夹 .

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

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

  • 26

    要扩展Yuchen's answer,您可以将文件和路径包含为链接 . 这与添加现有项目不同,因为它没有't make an extra copy in your project'的文件夹结构 . 如果您希望在许多不同的地方使用一个规范文件夹/文件等,但您只想维护它的一个版本/副本,这将非常有用 .

    以下是您可以添加到 *.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) 是我定义的Windows环境变量,您可以以相同的方式使用内置的环境变量 .

    最后一个示例组是最终输出中需要的一堆内容文件 . 有关详细信息,请参阅https://stackoverflow.com/a/11808911/492以及其他答案和链接 .

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

  • 1

    您也可以将文件夹从Windows Explorer拖放到Visual Studio解决方案窗口中 .

  • 5

    在Visual Studio 2017中,您可以来回切换“解决方案视图”和“文件夹视图” . 我认为这是一个更好的选择,因为它将使解决方案更清洁 . 我用它来编辑.gitignore,.md文件等 .

  • 1

    在Visual Studio 2013中,右键单击文件夹时无法使用“包含在项目中” . 什么工作是扩展文件夹,选择所有文件,然后选择“包含在项目中” . 这是非常繁琐的,因为你必须逐个完成每个文件夹(但至少你可以一次完成每个文件夹中的所有文件),它似乎存储文件路径(你可以通过查看文件中的属性来看到这一点)并查看“相对路径”选项 . )

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

  • 63

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

  • 13

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

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

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

    这可以限制为仅包括指定路径中的文件:

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

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

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

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

相关问题