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

765

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

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

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

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

Йен Патрик Хьюз
источник
44
Тот факт, что это не очевидно для большинства людей (включая меня), является печальным свидетельством о Visual Studio.
Пит Элвин
22
@ Пит Элвин У меня есть много печальных завещаний о Visual Studio, но я ценю это больше сейчас, когда провел время с некоторыми другими IDE.
Фрик Нортье
4
Однако Visual Studio не идеален, я использовал почти все доступные среды. Если это лучшее. Eclipse даже не близко, Xcode, вероятно, единственный, кто подходит близко.
user1127081
2
@ user1127081: я должен это подтвердить. Visual Studio довольно далек от совершенства, но я использовал почти все остальные IDE практически для каждой разработки и целевой ОС, и все они намного хуже. Я также должен согласиться с тем, что XCode явно и безусловно лучший из всех, но это стало так только после того, как он одобрил многое между XCode 3 и XCode 4. Eclipse - просто кошмар.
Кайзерлуди

Ответы:

737

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

Даррен Копп
источник
42
Это не работает для меня. Это просто дает мне значок недопустимой цели. Показать все файлы ниже работает отлично, хотя
Cine
115
В VS 2010, после перетаскивания папки, выберите опцию Показать все файлы в проекте. Файлы существуют в «призрачной» форме, щелкните правой кнопкой мыши на папке и включите в проект. Затем они будут добавлены
Джон Птачек
10
@JohnPtacek: Это работает в проекте, но не в решении.
2
Этот ответ недействителен для VS2010 (по крайней мере, насколько я могу судить). Ответ Тома 7/10/12 был лучшим решением для меня в VS2010
BLSully
8
Убейте explorer.exe с помощью диспетчера задач, запустите его с правами администратора, а затем перетащите его в Visual Studio, даже если он работает от имени администратора.
Ксандер
545

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

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

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

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

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

Brannon
источник
2
Кажется, что это работает только для файлов глубже, чем файл вашего проекта, если вы держите файл проекта в папке самостоятельно, это не будет работать.
Дэнни Паркер
28
Это работает только в отдельных проектах, но не в рамках решения.
7
Да ... это не то место, куда вы должны положить файлы. Конечно, он не найдет файлы выше вашей корневой папки.
Bluebaron
3
Это будет работать только тогда, когда вы хотите, чтобы добавленные вами папки находились в папке вашего проекта. В моем случае я хочу, чтобы они были где-то еще (разделены между проектами). В XCode перетаскивание структуры папок из любого места в структуру проекта сохраняет структуру папок, а не выравнивает ее, как VS. Похоже, VS не хватает здесь функции.
Маттийс
9
Совет - убедитесь, что проект выбран, а не решение - тогда вы можете показать все!
niico
89

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

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

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

Том
источник
16
Чем это отличается от ответа Брэннона 4 года назад?
ToolmakerSteve
7
Это не решает исходную проблему, которая относится к папке Solution . Это также было ранее покрыто.
user2864740
@ToolmakerSteve: Это отличается тем, что оно совпадает с решением Ганта из ... 7 лет назад. stackoverflow.com/questions/392473/…
Veverke
Настоятельно рекомендуем это решение, так как оно также помогает, когда конфликтующие файлы csproj были отмечены, а tfs игнорирует конфликты и перезаписывает их
John Demetriou
6
+1. Я нашел этот ответ более полезным, чем другие, потому что он (относительно) ясно показывает, что Показать все файлы - это значок , а не запись в контекстном меню.
35

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

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

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

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

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

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

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

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

ИЛЬЯ БРОУДНО
источник
Я вижу такое же поведение, VS2010, C ++.
Радим Черней
Правда, также в Visual Studio 2010. Он даже не добавляет файлы без структуры каталогов для меня, только самый первый файл в этой структуре папок, а не подпапки.
Джонас
2
Согласитесь, это все же отличается. Интересно, как популярное и дорогое программное обеспечение, такое как VS, может не иметь такой функции. Мне кажется довольно странным иметь две разные, но похожие структуры в проводнике решений и проводнике Windows ...
Janis
12
Используя 2015 здесь; все еще не сохраняет структуру папок. Обалдеть.
Тоби Дешане
Используя 2015 Обновление 3, только что имел успех с подходом от Бэннона и Тома. Все вложенные папки пришли как положено.
Джон Хаттон
22

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

  1. Включите «Показать все файлы» - на панели инструментов Solution Explorer есть значок
  2. С помощью проводника Windows (не обозревателя решений) переместите файлы в структуру каталогов, в которой они должны находиться
  3. Нажмите «Обновить» также на панели инструментов обозревателя решений.
  4. Перемещенные файлы должны быть видны «призраками» в древовидной структуре Solution Explorer, в которой вы их разместили.
  5. Щелкните правой кнопкой мыши по своим призрачным файлам или папкам и нажмите «Включить в проект». Все содержимое папки будет включено
Дон Рул
источник
2
Это для папки с решениями, а не для проекта.
StingyJack
Обновление: в VS2019 нет кнопки «Обновить»
Лю Хао
16

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

Введите описание изображения здесь

Марвин Гленн Лакуна
источник
13

Введите описание изображения здесь

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

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

Маной Каллури
источник
9

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

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

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

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

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

<Project>
</Project>

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

Bjego
источник
Да, иногда ручное редактирование файла *. * Proj приведет вас туда, куда вы хотите.
Крис О
1
То есть вы говорите, что кто-то может создать плагин для пакетной обработки? Потому что я не воссоздаю структуру папок с десятками папок вручную в xml
Spectraljump
Именно то, что я искал
Виталий Калинин
5

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

Надер
источник
1
Это в значительной степени то, что предлагает принятый ответ и один из комментариев под ним.
Кев
4

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

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

Тогда в ваше решение будет добавлено все, от папок до файлов и файлов внутри этих папок.

Вилли Дэвид младший
источник
4

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

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

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

Перенесите свою кодовую базу C ++ в Visual Studio с помощью «Открыть папку»

Naren
источник
4

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

Папка в папку решения

Папка-к-решения-папки

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

НТН

Ян Дюран
источник
Расширение не работает для меня в версии VS 15.9.13 2017
Mateusz Migała
2

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

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

Yatrix
источник
1

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

Ник
источник
0

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

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

user1395598
источник
5
Это не поддерживает структуру каталогов - оно просто помещает все в папку, в которую вы нажали «Добавить».
Марк
0

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

Джейсон Кестер
источник
-3

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

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

lama12345
источник