Как добавить существующее дерево каталогов в проект в Visual Studio?
Вопрос действительно прост. Вместо создания папок в Visual Studio я создаю структуру каталогов для своего проекта в файловой системе. Как мне включить все папки и файлы в проект, сохраняя структуру?
Если я "добавлю существующий файл" в папку с именем Services и перейду к файлу в структуре каталогов. Services > AccountManagement > CreateAccount.cs, он будет отображаться в Visual Studio следующим образом: Services > CreateAccount.cs. Я не хочу это.
У меня уже есть вся структура каталогов, поскольку я имитирую наших клиентов-разработчиков, использующих ту же структуру для организации. Как добавить все папки и файлы в проект в Visual Studio? Или я должен делать то, что делает большинство пользователей Microsoft, "мириться с этим" и заново создавать каждую папку через Visual Studio?
13 ответов
Вы должны поместить свою структуру каталогов в каталог вашего проекта. А затем нажмите значок "Показать все файлы" в верхней части панели инструментов Solution Explorer. После этого будет добавлен добавленный каталог. Затем вам нужно будет выбрать этот каталог, щелкнуть правой кнопкой мыши и выбрать "Включить в проект".
Вы также можете перетащить папку из проводника 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
Копировать и вставить.
Чтобы добавить папку, все подкаталоги и файлы, мы также можем скопировать и вставить. Например, мы можем:
Щелкните правой кнопкой мыши в проводнике Windows на папке и скопируйте в папку с большим количеством файлов и папок.
Затем в обозревателе Visual Studio Solution щелкните правой кнопкой мыши папку назначения и выберите команду "Вставить".
Необязательно добавить в TFS; Затем в верхней папке щелкните правой кнопкой мыши и войдите в TFS, чтобы проверить все подпапки и файлы.
Вы можете использовать символическую ссылку. Это позволяет изменять файл в одном проекте, изменять его в другом (так как на самом деле это тот же файл).
Сделать это:
- Откройте командную строку как администратор
- mklink /d [имя каталога текущего проекта] [каталог в другом проекте, на который он должен указывать]
У этого есть свои недостатки и подводные камни, но я иногда использую его для дублирующих библиотек, которым нужны разные имена.
Редактировать для Anoop: шаги для добавления в Visual Studio:
- Создайте ссылку в папке проекта, используя шаги выше.
- В Visual Studio... выберите проект в обозревателе решений.
- В верхней части Solution Explorer... нажмите кнопку Показать все файлы (может потребоваться дважды щелкнуть ее, если она уже активна).
- Теперь ссылка будет отображаться в вашем проекте... щелкните правой кнопкой мыши и выберите "Включить в проект".
Это шаги, которые я выполняю и работает для нескольких разных проектов.
Чтобы расширить ответ Yuchen, вы можете включить файлы и пути в качестве ссылки. Это не то же самое, что добавление существующих элементов, потому что это не делает дополнительную копию в структуре папок вашего проекта. Это полезно, если вы хотите, чтобы одна каноническая папка / файл и т. Д. Использовалась во многих разных местах, но вы хотите сохранить только одну версию / копию.
Вот пример того, что вы можете добавить к *.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, вы можете использовать встроенные переменные окружения таким же образом.
Последняя группа примеров - это набор файлов содержимого, которые мне нужны в конечном выводе. См. /questions/22987884/vklyuchaya-fajlyi-soderzhimogo-vcsproj-nahodyaschiesya-vne-konusa-proekta/22987887#22987887 и другие ответы и ссылки там для получения дополнительной информации об этом.
Дополнительная информация о MSBuild по адресу https://msdn.microsoft.com/en-us/library/bb629388.aspx
В Visual Studio 2017 вы переключаетесь между просмотром решений и просмотром папок назад и вперед. Я думаю, что это лучший вариант, потому что он будет держать решение чище. Я использую это для редактирования.gitignore, .md файлов и т. Д.
Я думаю, что нашел способ сделать это с помощью 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>
В Visual Studio 2013 я не мог заставить "Включить в проект" работать при щелчке правой кнопкой мыши по папке. Что работало, так это расширение папки, выбор всех файлов и выбор "Включить в проект". Это было довольно утомительно, так как вы должны делать каждую папку одну за другой (но, по крайней мере, вы можете сделать все файлы в каждой папке за один раз), и кажется, что для сохранения пути к файлу (вы можете увидеть это, просмотрев свойства файла и глядя на "Относительный путь" вариант.)
Я надеюсь использовать это для развертывания некоторых файлов данных в проекте установщика Visual Studio, и он, похоже, выбирает включенные файлы и сохраняет их пути.
Visual Studio 2017 и новее поддерживают новый легкий .csproj
формат, который стал известен как "формат SDK". Одним из нескольких преимуществ этого формата является то, что вместо того, чтобы содержать список файлов и папок, которые включены, файлы по умолчанию включаются по шаблону. Таким образом, с этим новым форматом ваши файлы и папки - добавленные в Проводнике или в командной строке - будут загружены автоматически!
Формат SDK .csproj
В настоящее время файл работает со следующими типами проектов:
Проекты библиотеки классов
Консольные приложения
Базовые веб-приложения ASP.NET
.NET Core проекты любого типа
Чтобы использовать новый формат, создайте новый проект.NET Core или.NET Standard. Поскольку шаблоны не были обновлены для полной версии.NET Framework даже в Visual Studio 2019, для создания библиотеки классов.NET выберите шаблон стандартной библиотеки.NET, а затем отредактируйте файл проекта, чтобы выбрать нужную версию платформы (новый формат проекта стиля можно редактировать в Visual Studio - просто щелкните правой кнопкой мыши проект в обозревателе решений и выберите "Редактировать файл проекта"). Например:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Дальнейшее чтение:
Я не нашел ответа на мое удовлетворение, поэтому я понял сам.
Вот вам ответ, если вы хотите добавить внешние исходные коды в свой проект и не хотите копировать все коды. У меня много зависимостей от других мерзавцев, и они обновляются ежечасно, если не поминутно. Я не могу делать копии каждый час, чтобы синхронизироваться. Вот что вам нужно сделать.
Предположим, что это структура:
/ Корень / projA / SRC
/ Корень / projA / включает в себя
/ Корень / projB / SRC
/ Корень / projB / включает в себя
/ Корень / yourProj / SRC
/ Корень / yourProj / включает в себя
- Начните решение VS.
- Щелкните правой кнопкой мыши имя проекта прямо под Решением.
- Затем нажмите "Добавить", "Новый фильтр", введите название "projA" для projA.
- Щелкните правой кнопкой мыши на "projA", нажмите "Добавить", "Новый фильтр", введите имя "src"
- Щелкните правой кнопкой мыши на "projA", нажмите "Добавить", "Новый фильтр", введите название "включает"
- Щелкните правой кнопкой мыши "projA" / "src", нажмите "Добавить", "Существующий элемент", затем перейдите к / root / projA / src, чтобы добавить все исходные коды или один за другим для нужных вам.
- Сделать то же самое для "projA" / "включает"
Сделайте то же самое для projB. Теперь внешние / существующие проекты вне вашего присутствуют в вашем решении / проекте. VS скомпилирует их вместе. Вот трюк. Поскольку projA и projB являются виртуальными папками в вашем проекте, компилятор может не найти projA / include.
Если он не находит projA / includes, то щелкните правой кнопкой мыши проект, выберите "Свойства".
- Перейдите к "C/C++". Отредактируйте "Дополнительные каталоги включения", добавьте ваш projA / include как таковой "../projA/includes", относительный путь.
Одно предостережение: если есть дублированные файлы include / header, "исключить из проекта" в "заголовочном файле" действительно не работает. Это ошибка в VS.
Визуальная Студия 2022
Я видел единственное предложенное здесь решение для VS2022, которое подразумевало фактическое копирование существующих физических папок.
В моем случае мне нужно было добавить папки, уже находящиеся в папке моего решения, но я подозреваю, что это только особый случай.
Я установил расширение с именем Folder To Solution Folder.
После того, как вы добавите его в VS2022, все, что вам нужно сделать, это щелкнуть правой кнопкой мыши свое решение и перейти к «Добавить» в контекстном меню, как показано ниже :
Это не становится проще; для небольших папок это происходит практически мгновенно. Я даже добавил папку с 2000+ файлами (и 19 подпапками): это заняло где-то 2 минуты и мне пришлось нажать ESCнесколько раз, потому что в ней были файлы шрифтов (хотя я не уверен, что это из-за этого расширения), но Оно работало завораживающе.
Это расширение — всего лишь порт на VS2022 из другого расширения .
Насколько я могу судить, единственный способ сделать это в VS2010 сродни методу перетаскивания. Щелкните правой кнопкой мыши решение, к которому вы хотите добавить проект. В меню приложения будет добавлен пункт... Открыв это, вы обнаружите, что одним из вариантов является добавление существующего проекта в решение.
В открывшемся диалоговом окне перейдите к папке, содержащей файл проекта для решения, и выберите его. VS, как часть импорта этого файла проекта, также импортирует весь каталог и, я полагаю, любые подчиненные каталоги, которые являются частью этого проекта.
Поскольку для этого требуется существующий файл проекта, невозможно будет импортировать дерево каталогов до тех пор, пока это дерево не будет преобразовано в проект.