Как добавить существующее дерево каталогов в проект в Visual Studio?

проблема очень проста. Вместо создания папок в Visual Studio я создаю структуру каталогов для своего проекта в файловой системе. Как включить все папки и файлы в проект, сохраняя структуру?

Если я "добавляю существующий файл" в папку с именем Services и перейдите к файлу в структуре каталогов .. Службы > Управление Учетными Записями > CreateAccount.cs, он появляется в Visual Studio следующим образом: Службы > CreateAccount.цезий. Я не хочу этот.

У меня уже разработана целая структура каталогов, так как я имитирую наших разработчиков клиентов, использующих ту же структуру для организации. Как добавить все папки и файлы в проект в Visual Studio? Или я должен делать то, что делают большинство пользователей Microsoft, и "мириться с этим" и воссоздавать каждую папку через Visual Studio?

10 ответов


вам нужно поместить структуру каталогов в каталог проекта. А затем нажмите значок "показать все файлы"в верхней части панели инструментов обозревателя решений. После этого будет показан добавленный каталог. Затем вам нужно будет выбрать этот каталог, щелкнуть правой кнопкой мыши и выбрать "включить в проект"."

enter image description here

enter image description here


вы также можете перетащить папку из Проводник 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/automatic-include-in-project-for-visual-studio


Копировать & Вставить.

чтобы добавить папку, все подкаталоги и файлы, которые мы также можем скопировать и вставить. Например, мы можем:

  1. щелкните правой кнопкой мыши в проводнике Windows в папке и скопируйте в папку со многими файлами и папками.

  2. затем в обозревателе решений Visual Studio щелкните правой кнопкой мыши папку назначения и выберите Вставить.

  3. необязательно добавить в TFS; затем в верхней части щелкните правой кнопкой мыши папку и зайдите в TFS, чтобы проверить все подпапки и файлы.


вы можете использовать символическую ссылку. Это делает изменение файла в одном проекте изменить его в другом (как это на самом деле тот же файл).

для этого:

  1. открыть приглашение cmd как администратор
  2. mklink / d [текущее имя каталога проекта] [каталог в другом проекте он должен указывать на]

Это имеет свои недостатки и подводные камни, но я использую его иногда для дубликатов библиотек, которым нужны разные имена.

изменить для Ануп: Шаги для добавления в Visual Studio:

  1. создать ссылку в папке проекта, используя шаги выше.
  2. В Visual Studio... выберите проект в обозревателе решений.
  3. в верхней части обозревателя решений... нажмите кнопку Показать все файлы (может потребоваться дважды щелкнуть ее, если она уже активна).
  4. ссылка теперь будет отображаться в вашем проекте... щелкните правой кнопкой мыши и выберите Включить в проект.

Это шаги, которые я следую и работает для пара разных проектов.


расширить на ответ Ючена можно включать файлы и пути в ссылку. Это не то же самое, что добавление существующих элементов, поскольку он не создает дополнительную копию в структуре папок вашего проекта. Это полезно, если вы хотите, чтобы одна каноническая папка / файл и т. д. использовалась во многих разных местах, но вы хотите поддерживать только одну версию/копию.

вот пример того, что вы можете добавить к создать ссылка

<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


в Visual Studio 2017 вы переключаетесь между Посмотреть Решение и Посмотреть В Папке и обратно. Я думаю, что это лучший вариант, потому что он будет держать уборщика решения. Я использую это для редактирования .гитюдного, .файлы MD и др.

Solution View and Folder View


в Visual Studio 2013 я не мог заставить" включить в проект " работать при щелчке правой кнопкой мыши по папке. Что действительно работает, это расширение папки, выбор всех файлов, а затем выбор "включить в проект". Это было довольно утомительно, поскольку вам нужно делать каждую папку по одному (но, по крайней мере, вы можете делать все файлы в каждой папке за один раз), и, похоже, сохранить путь к файлу (вы можете увидеть это, просмотрев свойства файла и посмотрев на опцию "относительный путь".)

Я надеюсь чтобы использовать это для развертывания некоторых файлов данных в проекте установщика Visual Studio, и, похоже, забрать включенные файлы и сохранить их пути.


Я думаю, что нашел способ сделать это с помощью компиляции Include=".\Код.***цезий" Я хотел бы рекурсивно включить код в папку с кодом.

вот пример файла проекта.

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

насколько я могу судить, единственный способ сделать это в VS2010 сродни методом перетаскивания. Щелкните правой кнопкой мыши решение, к которому требуется добавить проект. Меню приложения будет иметь add ... пункт. Открыв его, вы обнаружите, что одним из вариантов является добавление существующего проекта в решение.

В открывшемся диалоговом окне перейдите к папке с файлом проекта для решения, и выделите его. VS будет, как часть импорта этого файла проекта, также импортируйте весь каталог и, я предполагаю, любые подчиненные каталоги, которые являются частью этого проекта.

поскольку для этого требуется существующий файл проекта, не будет невозможно импортировать дерево каталогов, пока это дерево не будет преобразовано в проект.