Как добавить существующее дерево каталогов в проект в Visual Studio? - PullRequest
721 голосов
/ 25 декабря 2008

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

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

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

Ответы [ 11 ]

1264 голосов
/ 25 декабря 2008

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

enter image description here

enter image description here

66 голосов
/ 25 декабря 2008

Вы также можете перетащить папку из Windows Explorer в окно решения Visual Studio.

44 голосов
/ 25 февраля 2016

В 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

31 голосов
/ 25 июня 2013

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

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

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

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

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

17 голосов
/ 24 октября 2014

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

Для этого:

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

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

Редактировать для Anoop: Шаги для добавления в Visual Studio:

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

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

9 голосов
/ 22 августа 2017

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

Вот пример того, что вы можете добавить в файл *.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

8 голосов
/ 14 марта 2018

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

Solution View and Folder View

4 голосов
/ 31 января 2018

Я думаю, что нашел способ сделать это с помощью Compile Include = ". \ Code ***. 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>
2 голосов
/ 17 января 2015

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

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

0 голосов
/ 14 февраля 2019

Я не нашел ответа на свое удовлетворение, поэтому сам разобрался.

Вот вам ответ, если вы хотите добавить внешние исходные коды в свой проект и не хотите копировать все коды. У меня много зависимостей от других мерзавцев, и они обновляются ежечасно, если не поминутно. Я не могу делать копии каждый час, чтобы синхронизироваться. Вот что вам нужно сделать.

Предположим, что это структура:

/ корень / projA / ЦСИ

/ корень / projA / включает

/ корень / projB / ЦСИ

/ корень / projB / включает в себя

/ корень / yourProj / ЦСИ

/ корень / yourProj / включает

  1. Запустите решение VS.
  2. Щелкните правой кнопкой мыши имя проекта прямо под Решением.
  3. Затем нажмите «Добавить», «Новый фильтр», введите имя «projA» для projA.
  4. Щелкните правой кнопкой мыши на «projA», нажмите «Добавить», «Новый фильтр», введите имя «src»
  5. Щелкните правой кнопкой мыши на «projA», нажмите «Добавить», «Новый фильтр», введите имя «Включает»
  6. Щелкните правой кнопкой мыши «projA» / «src», нажмите «Добавить», «Существующий элемент», затем перейдите к / root / projA / src, чтобы добавить все исходные коды или один за другим для тех, которые вам нужны.
  7. То же самое для "projA" / "включает"
  8. Сделайте то же самое для projB. Теперь внешние / существующие проекты вне вашего присутствуют в вашем решении / проекте. VS скомпилирует их вместе. Вот трюк. Поскольку projA и projB являются виртуальными папками в вашем проекте, компилятор может не найти projA / include.

  9. Если он не находит projA / includes, то щелкните правой кнопкой мыши проект, выберите «Свойства».

  10. Перейдите к «C / C ++». Отредактируйте «Дополнительные каталоги включения», добавьте свой projA / include как таковой «../projA/include», относительный путь.

Одно предостережение: если есть дубликаты файлов include / header, «исключить из проекта» в «заголовочном файле» на самом деле не работает. Это ошибка в VS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...