Как добавить существующее дерево каталогов в проект в Visual Studio?
Проблема проста. Вместо создания папок в Visual Studio я создаю структуру каталогов для моего проекта в файловой системе. Как включить все папки и файлы в проект, сохраняя структуру?
Если я добавлю "Существующий файл" в папку "Службы" и перейдите к файлу в структуре каталогов. Services > AccountManagement > CreateAccount.cs, он появится в Visual Studio следующим образом: Services > CreateAccount.cs. Я не хочу этого.
У меня уже сформирована целая структура каталогов, так как я имитирую наших клиентских разработчиков, используя ту же структуру для организации. Как добавить все папки и файлы в проект в Visual Studio? Или мне нужно делать то, что делают большинство пользователей Microsoft, и "мириться с этим", и воссоздать каждую папку через Visual Studio?
Ответы
Ответ 1
Вам нужно разместить свою структуру каталогов в каталоге проекта. Затем щелкните значок "Показать все файлы" в верхней части панели инструментов Solution Explorer. После этого появится добавленный каталог. Затем вам нужно будет выбрать этот каталог, щелкнуть правой кнопкой мыши и выбрать "Включить в проект".
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Ответ 2
Вы также можете перетащить папку из Windows Explorer в окно решения Visual Studio.
Ответ 3
В 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
Ответ 4
Копировать и вставить.
Чтобы добавить папку, все подкаталоги и файлы, мы также можем скопировать и вставить.
Например, мы можем:
-
Щелкните правой кнопкой мыши в проводнике Windows в папке и скопируйте в папку со многими файлами и папками.
-
Затем в проводнике Visual Studio Solution щелкните правой кнопкой мыши папку назначения и нажмите "Вставить".
-
Дополнительное дополнение к TFS; Затем в верхней папке щелкните правой кнопкой мыши и зайдите в TFS, чтобы проверить все подпапки и файлы.
Ответ 5
Вы можете использовать символическую ссылку. Это позволяет изменить файл в одном проекте, изменить его в другом (как на самом деле тот же файл).
Для этого:
- Открыть приглашение cmd как администратор
- mklink/d [имя текущего каталога проекта] [каталог в другом проекте, на который он должен указывать]
У этого есть недостатки и ловушки, но я иногда использую его для дубликатов библиотек, которым нужны разные имена.
Изменить для Anoop:
Шаги для добавления в Visual Studio:
- Создайте ссылку в папке проекта, используя приведенные выше шаги.
- В Visual Studio... выберите проект в обозревателе решений.
- В верхней части Solution Explorer... нажмите кнопку Показать все файлы (возможно, нужно дважды щелкнуть по нему, если они уже активны).
- Теперь ссылка будет показана в вашем проекте... щелкните правой кнопкой мыши и выберите "Включить в проект".
Это шаги, которые я выполняю, и работает для нескольких разных проектов.
Ответ 6
Чтобы расширить ответ 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, вы можете использовать встроенные переменные окружения таким же образом.
Последняя группа примеров - это набор файлов содержимого, которые мне нужны в конечном выводе. См. fooobar.com/questions/14649/... и другие ответы и ссылки там для получения дополнительной информации об этом.
Дополнительная информация о MSBuild по адресу https://msdn.microsoft.com/en-us/library/bb629388.aspx
Ответ 7
В Visual Studio 2017 вы переключаетесь между просмотром решений и просмотром папок назад и вперед. Я думаю, что это лучший вариант, потому что он будет держать решение чище. Я использую это для редактирования .gitignore,.md файлов и т.д.
![Solution View and Folder View]()
Ответ 8
Я думаю, что нашел способ сделать это с помощью 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>
Ответ 9
В Visual Studio 2013 я не смог получить "Include in Project" для работы при щелчке правой кнопкой мыши по папке. Что работа расширяет папку, выбирая все файлы, а затем выбрав "Включить в проект". Это было довольно утомительно, так как вам нужно делать каждую папку по одной (но, по крайней мере, вы можете делать все файлы в каждой папке за один раз), и она, похоже, хранит путь к файлу (вы можете увидеть это, просмотрев свойства в файле и глядя на параметр "Относительный путь".)
Я надеюсь использовать это, чтобы развернуть некоторые файлы данных в проекте установщика Visual Studio, и, похоже, он забирает включенные файлы и сохраняет их пути.
Ответ 10
Насколько я могу судить, единственный способ сделать это в VS2010 сродни методу перетаскивания. Щелкните правой кнопкой мыши по решению, к которому вы хотите добавить проект. В меню приложения будет добавлен элемент.... Открыв это, вы обнаружите, что одним из вариантов является добавление существующего проекта в решение.
В открывшемся диалоговом окне перейдите к папке, содержащей файл проекта для решения, и выберите ее. VS, как часть импорта этого файла проекта, также импортирует весь каталог, и я предполагаю, что любые подчиненные каталоги являются частью этого проекта.
Поскольку для этого требуется существующий файл проекта, импортировать дерево каталогов будет невозможно, пока это дерево не будет преобразовано в проект.
Ответ 11
Я не нашел ответа на мое удовлетворение, поэтому я понял сам.
Вот вам ответ, если вы хотите добавить внешние исходные коды в свой проект и не хотите копировать все коды. У меня много зависимостей от других мерзавцев, и они обновляются ежечасно, если не поминутно. Я не могу делать копии каждый час, чтобы синхронизироваться. Вот что вам нужно сделать.
Предположим, что это структура:
/Корень/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.
Ответ 12
Visual Studio 2017 и новее поддерживают новый легкий формат .csproj
, который стал называться "формат SDK". Одним из нескольких преимуществ этого формата является то, что вместо того, чтобы содержать список файлов и папок, которые включены, файлы по умолчанию включаются по шаблону. Таким образом, с этим новым форматом ваши файлы и папки - добавленные в Проводнике или в командной строке - будут загружены автоматически!
Файл .csproj
формате SDK в настоящее время работает со следующими типами проектов:
-
Проекты библиотеки классов
-
Консольные приложения
-
Основные веб-приложения 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>
Дальнейшее чтение: