Как мне "добавить существующий элемент" всю структуру каталогов в Visual Studio?
=================================================================================

 У меня есть автономный набор файлов, не связанных с каким-либо проектом С#, которые находятся в сложной структуре вложенных каталогов.

  Я хочу добавить их в этом формате в другой каталог в веб-приложении ASP.NET, над которым я работаю; сохраняя ту же структуру. Итак, я скопировал папку в целевое местоположение моего проекта и попытался "добавить существующий элемент" только для того, чтобы потерять предыдущую иерархию папок.

  Обычно я заново создавал каталоги вручную, копировал их один на один, а затем добавлял существующие элементы. В этом случае просто слишком много каталогов/элементов.

  Так как же добавить существующие каталоги и файлы в Visual Studio 2008?

 

Перетащите файлы/папки из проводника Windows в Обозреватель решений. Он добавит их все. Обратите внимание, что это не работает, если Visual Studio находится в режиме администратора, потому что проводник Windows - это процесс пользовательского режима.

 

 Включите "Показать все файлы" для конкретного проекта (вам может потребоваться нажать "Обновить", чтобы увидеть их) **.

  Папки/файлы, которые не являются частью вашего проекта, выглядят немного "светлее" в дереве проекта.

  Щелкните правой кнопкой мыши папки/файлы, которые вы хотите добавить, и нажмите "Включить в проект". Он будет рекурсивно добавлять папки/файлы в проект.

  ** Эти кнопки расположены на панели инструментов мини-обозревателя решений.

  ** Убедитесь, что вы не в режиме отладки.

 

 В обозревателе решений:

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

 Я использую это для установки надстроек, таких как HTML-редакторы и сторонние файловые браузеры.

 

 Я просто хочу отметить, что два из предложенных ранее решений,

 * Перетащите из проводника Windows
* Показать все файлы и затем включить в проект.

 не делайте то, что задан вопрос:

  Включить в проект при сохранении структуры каталогов.

  По крайней мере, в моем случае (C++/CLI проект Visual Studio 2013 на Windows 7).

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

  Да, на диске они все еще находятся там, где они были, но в Solution Explorer они свободны.

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

 

Я не сразу понял это на основе этих описаний, но вот что я, наконец, наткнулся на:

* Включить "Показать все файлы" - на панели инструментов Solution Explorer есть значок
* Используя проводник Windows (не проводник решений), переместите файлы в структуру каталогов, где вы хотите, чтобы они находились
* Нажмите "Обновить" также на панели инструментов Solution Explorer
* Файлы, которые вы переместили, должны быть видимыми "призрачными" в древовидной структуре Solution Explorer, где вы разместили их
* Щелкните правой кнопкой мыши на ваших призрачных файлах или папках и нажмите "Включить в проект". Все содержимое папки будет включено

 

 Ниже приведен значок " **Показать все файлы** ", просто для удобства.

  [![Enter image description here]()](/img/1f3d7be7b1771496719c1d906902eac3.jpg)

 

 [![Enter image description here]()](/img/be18018fa2097a4a9d04c05689c738a4.png)

  Нажмите выше в красном круге. Ваша папка появится в обозревателе решений.

  Щелкните правой кнопкой мыши на вашей папке → Включить в проект.

 

 Вы можете изменить XML вашего проекта, чтобы автоматически добавлять существующие подпапки и структуры в ваш проект, например, "node\_modules" из NPM:

  Это для старых версий MSBuild/Visual Studio

 
```
<ItemGroup>
   <Item Include="$([System.IO.Directory]::GetFiles("$(MSBuildProjectDirectory)\node_modules","*",SearchOption.AllDirectories))"></Item>
</ItemGroup>

```
  Для текущих версий MSBuild/Visual Studio:

  Просто поместите его в узлы XML:

 
```
<Project>
</Project>

```
  В этом случае просто замените $ (MSBuildProjectDirectory)\node\_modules на имя вашей папки.

 

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

 

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

 1. Файл меню → Открыть → * Папка (`Ctrl` + `Shift` + `O`)
2. `devenv.exe <source folder>`

 Он даже поддерживает сборку и отладку проектов CMake.

  [Перенесите свою кодовую базу C++ в Visual Studio с помощью "Открыть папку"](https://blogs.msdn.microsoft.com/vcblog/2016/10/05/bring-your-c-codebase-to-visual-studio-with-open-folder)

 

Это то, что я делаю:

* Щелкните правой кнопкой мыши по решению → Добавить → Существующий веб-сайт...
* Выберите папку, в которой находится ваш сайт. Просто корневая папка сайта.

Затем все будет добавлено в ваше решение из папок в файлы и файлы внутри этих папок.

 

 Я обнаружил интересную хитрость: если вы перейдете к "Добавить существующий...", вы можете перетащить папку из открытого диалога в свое решение.

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

 

 Для меня было полезно перетащить папку в Visual Studio, затем щелкнуть правой кнопкой мыши по папке и выбрать "Открыть папку в проводнике". Затем выберите все и перетащите их в папку в Visual Studio.

 

В Windows 7 вы можете сделать следующее:

Щелкните правой кнопкой мыши на своем проекте и выберите "Добавить- > Существующий элемент". В появившемся диалоговом окне перейдите к корню каталога, который вы хотите добавить. В правом верхнем углу у вас есть окно поиска. Введите `*.cs` или `*.cpp`, независимо от типа файлов, которые вы хотите добавить. После завершения поиска выберите все файлы, нажмите "Добавить" и подождите некоторое время...

 

Самый чистый способ, который я нашел для этого, - создать новый проект библиотеки классов в целевой папке и перенаправить все его сборки в другом месте. Он все еще оставляет файл .csproj, сидящий в этой папке, но он позволяет увидеть его в Visual Studio и выбрать, какие файлы будут включены в ваш проект.

 

 Теперь есть расширение, которое, кажется, выполняет то, о чем просил OP:

  [Папка в папку решений](https://marketplace.visualstudio.com/items?itemName=CeciliaWiren-CeciliaSHARP.FolderToSolutionFolder)

  [![enter image description here]()](/img/1e2d6514ec19ba022c082766318c1c78.png)

 

 В Marketplace теперь есть расширение с открытым исходным кодом, которое, кажется, делает то, о чем просил OP:

  [Папка в папку решений](https://marketplace.visualstudio.com/items?itemName=CeciliaWiren-CeciliaSHARP.FolderToSolutionFolder)

  [![folder-to-solution-folder]()](/img/758015c95d8892b021f9eeb4788bb916.gif)

  Если он не выполняет то, что вам нужно, код доступен, так что вы можете изменить его в соответствии со своим сценарием.

  НТН

 

 Это раздражает, что Visual Studio не поддерживает это изначально, но CMake может генерировать проект Visual Studio как обходной путь.

  Кроме этого, просто используйте Qt Creator. Затем он может экспортировать проект Visual Studio.