Как добавить папку в проект visual studio
Я начал свой первый крупный проект с Visual Studio 2012 на С++. Я буду структурировать свои исходные файлы в папках, но я не могу найти, где я могу создавать реальные папки, например, в проводнике Windows. Итак, вот мой вопрос.
Как создать реальные папки в моем проекте?
спросил(а) 2020-03-31T16:13:47+03:00 1 год, 7 месяцев назадВ среде IDE имеется команда "Новая папка". Он присутствует даже в контекстном меню Project + Add, что вы можете видеть, когда смотрите контекстное меню с помощью инструментов + Настройка. Однако он скрыт в среде С++. Преднамеренно.
Его важно понять, почему он скрыт. Это избавляет вас от неприятностей, неприятностей, с которыми вы столкнетесь, когда создаете папки с помощью Explorer.
Проблема заключается в том, как файлы С++ создаются. Они создают файл .obj, когда компилятор выполняется с ними. Этот файл obj хранится в каталоге, имя которого является параметром проекта. Вы видите это с настройкой Project + Properties, General, Intermediate Directory. Для отдельного .cpp файла это C/С++, Output Files, Object File Name. По умолчанию для этого является $(IntDir) макрос, который сообщает компилятору использовать параметр промежуточного каталога. С настройками по умолчанию все файлы .obj для сборки Debug входят в подкаталог Debug. Выпустите подкаталог для сборки Release. Независимо от того, где хранился .cpp.
Возможно, теперь вы видите медвежью ловушку. Если вы создадите подкаталог с файлами .cpp, у вас возникнут проблемы, если в этом подкаталоге есть .cpp файл, имя которого идентично другому .cpp файлу в другом подкаталоге. Они создают файл .obj с тем же именем. Один перезаписывает другой, который когда-либо был составлен последним. Это создает очень загадочные ошибки компоновщика. Вы получите дубликаты символов, потому что последний построенный .obj файл дважды связан и пропускает ошибки символов для перезаписанного файла .obj.
Итак, продолжайте и создайте подкаталог, но остерегайтесь этой проблемы. Вы должны изменить параметр "Имя файла объекта" для файла .cpp, если произойдет такое столкновение.
Я начал свой первый больший проект с Visual Studio 2012 на C ++. Я структурирую свои Source-файлы по папкам, но не могу найти, где я могу создать реальные папки, как в проводнике Windows. Вот мой вопрос.
Как я могу создать реальные папки в моем проекте?
Решение
Для этого в среде IDE есть команда «Новая папка». Он даже присутствует в контекстном меню «Проект + Добавить», что можно увидеть, если посмотреть на контекстное меню с помощью «Инструменты + Настройка». Однако он скрыт в C ++ IDE. Преднамеренно.
Важно понять, почему он скрыт. Это избавит вас от неприятностей, с которыми вы столкнетесь при создании папок в Проводнике.
Вопрос в том, как создаются файлы C ++. Они создают файл .obj, когда компилятор покончит с ними. Этот файл obj хранится в каталоге, имя которого является настройкой проекта. Вы видите это с настройками Project + Properties, General, Intermediate Directory. Для отдельного файла .cpp это C / C ++, Выходные файлы, Имя файла объекта. По умолчанию для этого $(IntDir) макрос, который указывает компилятору использовать настройку Intermediate Directory. При настройках по умолчанию все файлы .obj для сборки Debug попадают в подкаталог Debug. Подкаталог Release для сборки Release. Независимо от того, где хранился .cpp.
Может быть, вы уже видите медвежью ловушку. Если вы создадите подкаталог с файлами .cpp, то у вас возникнут проблемы, когда у этого подкаталога будет файл .cpp, имя которого идентично другому файлу .cpp в другом подкаталоге. Они создают файл .obj с тем же именем. Один перезаписывает другой, который когда-либо был скомпилирован последним. Что производит очень мистифицирующие ошибки компоновщика. Вы получите повторяющиеся ошибки символов, потому что последний созданный файл .obj связан дважды и отсутствуют ошибки символов для перезаписанного файла .obj.
Поэтому создайте подкаталог, но остерегайтесь этой проблемы. Вы должны изменить настройку имени файла объекта для файла .cpp, если такое столкновение происходит.
Другие решения
Это немного раздражает, однако вот что можно сделать:
Создайте новую папку в Visual Studio. Это не создает новую папку в файловой системе. Добавить новый элемент в папку. Выберите правильный каталог для элемента.
Visual Studio 2012 поместит элемент в нужную папку. Если вы добавите новый элемент, он будет по умолчанию в той же папке. Вот где появляется раздражающая часть. Если вы создаете 3 папки для всех элементов проекта и пытаетесь добавить новый элемент в каждую папку, Visual Studio попытается поместить все 3 элемента в одно и то же место в файловой системе (последняя папку, в которую вы добавили новый элемент), при этом помещая элементы в правильную папку Visual Studio.
Возможно, в Visual Studio есть настройка для этого. Я не нашел это. Я также не выглядел так усердно.
Вопрос действительно прост. Вместо создания папок в Visual Studio я создаю структуру каталогов для своего проекта в файловой системе. Как мне включить все папки и файлы в проект, сохраняя структуру?
Если я «добавлю существующий файл» в папку с именем Services и перейду к файлу в структуре каталогов. Services> AccountManagement> CreateAccount.cs, в Visual Studio он будет выглядеть следующим образом: Services> CreateAccount.cs. Я не хочу это.
Я уже разработал всю структуру каталогов, поскольку я имитирую наших клиентов-разработчиков, использующих ту же структуру для организации. Как добавить все папки и файлы в проект в Visual Studio? Или я должен делать то, что делает большинство пользователей Microsoft, «мириться с этим» и заново создавать каждую папку через Visual Studio?
Вы должны поместить свою структуру каталогов в каталог вашего проекта. А затем нажмите значок «Показать все файлы» в верхней части панели инструментов Solution Explorer. После этого будет добавлен добавленный каталог. Затем вам нужно будет выбрать этот каталог, щелкнуть правой кнопкой мыши и выбрать «Включить в проект».
Вы также можете перетащить папку из проводника Windows в окно решения Visual Studio.
Это не работает в моей установке VS 2010 на Vista Ultimate 64 бит. Нет, не работает и в моей установке VS 2010 на Windows 7. Подтверждение того, что это не работает в VS 2010 (не в режиме администратора), тоже Я не думаю, что вы, ребята, делаете это правильно. VS 2010 поддерживает перетаскивание папок. Я делаю это все время, чтобы включить мои наборы инструментов. Вы должны убедиться, что вы попали в дерево проекта. Панель решений и сам узел решения не получат отбрасывание. ОС здесь неактуальна, но для сомневающихся я использую 64-битную Windows 7. «Элементы решения» отличаются от добавления элементов в проект. Элементы решения - это специальная папка в решении VS.В Visual Studio 2015 именно так вы и делаете.
Если вы хотите автоматически включить все файлы-потомки в определенную папку:
Это может быть ограничено включением только файлов в указанном пути:
Или даже только файлы с указанным расширением:
Я нашел это полезным, потому что тогда я мог бы включить один тег «всегда копировать при сборке» вместо необходимости аннотировать каждый отдельный файл (как это было в принятом ответе) Где это добавлено? Как добраться до представления XML в VS? Это лучшее решение, когда вы хотите добавить большую иерархическую папку, когда Visual Studio не отвечает и зависает.Копировать вставить .
Чтобы добавить папку, все подкаталоги и файлы, мы также можем скопировать и вставить. Например, мы можем:
Щелкните правой кнопкой мыши в проводнике Windows на папке и скопируйте в папку с большим количеством файлов и папок.
Затем в обозревателе Visual Studio Solution щелкните правой кнопкой мыши папку назначения и выберите команду «Вставить».
Необязательно добавить в TFS; Затем в верхней папке щелкните правой кнопкой мыши и войдите в TFS, чтобы проверить все подпапки и файлы.
Это работает для меня, но перетаскивание не работает в VS14 и Windows 10 Pro. перетаскивание может не работать, если вы не используете VS в качестве администратораВы можете использовать символическую ссылку. Это позволяет изменять файл в одном проекте, изменять его в другом (так как на самом деле это тот же файл).
- Откройте командную строку как администратор
- mklink / d [имя каталога текущего проекта] [каталог в другом проекте, на который он должен указывать]
У этого есть свои недостатки и подводные камни, но я иногда использую его для дублирующих библиотек, которым нужны разные имена.
Редактировать для Anoop: шаги для добавления в Visual Studio:
- Создайте ссылку в папке проекта, используя шаги выше.
- В Visual Studio . выберите проект в обозревателе решений.
- В верхней части Solution Explorer . нажмите кнопку Показать все файлы (может потребоваться дважды щелкнуть ее, если она уже активна).
- Теперь ссылка будет отображаться в вашем проекте . щелкните правой кнопкой мыши и выберите "Включить в проект".
Это шаги, которые я выполняю и работает для нескольких разных проектов.
Это не работает! символические ссылки не распознаются как папки @ Anoop: я добавил шаги, чтобы показать, как я использую этот метод. Пожалуйста, попробуйте. Работает! Я пытался создать ярлык, щелкнув правой кнопкой мыши папку, а не используя командную строку, и, таким образом, он не работал. Следующие шаги, описанные выше, исправили проблему. Спасибо Примечание: mklink не будет работать в файловой системе FAT. Это для NTFS. Контроль над исходным кодом вызовет хаос с символическими ссылками. Git нужны права администратора или просто проверяет файл.В Visual Studio 2017, вы можете переключаться между Solution View и Folder View вперед и назад. Я думаю, что это лучший вариант, потому что он будет держать решение чище. Я использую это для редактирования .gitignore, .md файлов и т. Д.
Расширить ответ Юхен , вы можете включить файлы и пути в качестве ссылки. Это не то же самое, что добавление существующих элементов, потому что это не делает дополнительную копию в структуре папок вашего проекта. Это полезно, если вы хотите, чтобы одна каноническая папка / файл и т. Д. Использовалась во многих разных местах, но вы хотите сохранить только одну версию / копию.
Вот пример того, что вы можете добавить в *.csproj файл, чтобы создать ссылку
$(Codez) Я определил переменную среды Windows, вы можете использовать встроенные переменные среды таким же образом.
Я думаю, что нашел способ сделать это с помощью Compile Include = ". \ Code ***. Cs". Я хотел включить рекурсивный код в мою папку Code.
Вот пример файла проекта.
В Visual Studio 2013 я не мог заставить «Включить в проект» работать при щелчке правой кнопкой мыши по папке. То, что сработало, - это расширение папки, выбор всех файлов и выбор «Включить в проект». Это было довольно утомительно, так как вы должны делать каждую папку одну за другой (но, по крайней мере, вы можете сделать все файлы в каждой папке за один раз), и кажется, что для сохранения пути к файлу (вы можете увидеть это, просмотрев свойства файла и глядя на «Относительный путь» вариант.)
Я надеюсь использовать это для развертывания некоторых файлов данных в проекте установщика Visual Studio, и он, похоже, выбирает включенные файлы и сохраняет их пути.
Насколько я могу судить, единственный способ сделать это в VS2010 сродни методу перетаскивания. Щелкните правой кнопкой мыши решение, к которому вы хотите добавить проект. В меню приложения будет добавлен пункт . Открыв это, вы обнаружите, что одним из вариантов является добавление существующего проекта в решение.
В открывшемся диалоговом окне перейдите к папке, содержащей файл проекта для решения, и выберите его. VS, как часть импорта этого файла проекта, также импортирует весь каталог и, я полагаю, любые подчиненные каталоги, которые являются частью этого проекта.
Поскольку для этого требуется существующий файл проекта, невозможно будет импортировать дерево каталогов, пока это дерево не будет преобразовано в проект.
Я не нашел ответа на мое удовлетворение, поэтому я понял сам.
Вот вам ответ, если вы хотите добавить внешние исходные коды в свой проект и не хотите копировать все коды. У меня много зависимостей от других мерзавцев, и они обновляются ежечасно, если не поминутно. Я не могу делать копии каждый час, чтобы синхронизироваться. Вот что вам нужно сделать.
Предположим, что это структура:
/ Корень / 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, то щелкните правой кнопкой мыши проект, выберите «Свойства».
Одно предостережение: если есть дублированные файлы include / header, «исключить из проекта» в «заголовочном файле» действительно не работает. Это ошибка в VS.
Visual Studio 2017 и новее поддерживают новый облегченный .csproj формат, который получил название «формат SDK». Одним из нескольких преимуществ этого формата является то, что вместо того, чтобы содержать список файлов и папок, которые включены , файлы по умолчанию включаются по шаблону.Таким образом, с этим новым форматом ваши файлы и папки - добавленные в Проводнике или в командной строке - будут загружены автоматически!
Проекты библиотеки классов
Вопрос действительно прост. Вместо создания папок в Visual Studio я создаю структуру каталогов для своего проекта в файловой системе. Как мне включить все папки и файлы в проект, сохранив структуру?
Если я «добавлю существующий файл» в папку с именем Services и перейду к файлу в структуре каталогов .. Services> AccountManagement> CreateAccount.cs, он появится в Visual Studio следующим образом: Services> CreateAccount.cs. Я не хочу это.
У меня уже проработана вся структура каталогов, так как я имитирую наших разработчиков-клиентов, использующих ту же структуру для организации. Как мне добавить в проект все папки и файлы в Visual Studio? Или мне нужно делать то, что делают большинство пользователей Microsoft, «мириться с этим» и воссоздавать каждую папку с помощью Visual Studio?
Вам необходимо поместить структуру каталогов в каталог проекта. Затем щелкните значок «Показать все файлы» в верхней части панели инструментов обозревателя решений. После этого появится добавленный каталог. Затем вам нужно будет выбрать этот каталог, щелкнуть правой кнопкой мыши и выбрать «Включить в проект».
В Visual Studio 2015 это делается так.
Если вы хотите автоматически включать все файлы-потомки в определенную папку:
Это может быть ограничено включением только файлов по указанному пути:
Или даже только файлы с указанным расширением:
Я нашел это полезным, потому что тогда я мог бы включить один тег для «всегда копировать при сборке», вместо того, чтобы аннотировать каждый отдельный файл (как это было в принятом ответе) Это лучшее решение, если вы хотите добавить большую иерархическую папку, в то время как Visual Studio не отвечает и зависает. Для тех, кто ищет, где это добавить, это файл .csproj . Например, Product.Feature.Web.csproj . Вам нужно будет добавить что-то вроде ` .Копировать и вставить .
Чтобы добавить папку, все подкаталоги и файлы, мы также можем скопировать и вставить. Например, мы можем:
Щелкните правой кнопкой мыши в проводнике Windows по папке и скопируйте папку с множеством файлов и папок.
Затем в обозревателе решений Visual Studio щелкните правой кнопкой мыши папку назначения и нажмите «Вставить».
Необязательно добавить в TFS; Затем в верхней папке щелкните правой кнопкой мыши и зарегистрируйтесь в TFS, чтобы проверить все подпапки и файлы.
Это сработало для меня, но перетаскивание не работало в VS14 и Windows 10 pro. Перетаскивание может не работать, если вы не используете VS как администраторВы можете использовать символическую ссылку. Это приводит к тому, что изменение файла в одном проекте изменяет его в другом (поскольку это фактически тот же файл).
- Откройте командную строку от имени администратора
- mklink / d [имя каталога текущего проекта] [каталог в другом проекте, на который он должен указывать]
У этого есть свои недостатки и подводные камни, но я иногда использую его для дублирующих библиотек, которым нужны разные имена.
Изменить для Anoop: шаги по добавлению в Visual Studio:
- Создайте ссылку в папке проекта, выполнив действия, описанные выше.
- В Visual Studio . выберите проект в обозревателе решений.
- В верхней части обозревателя решений . нажмите кнопку Показать все файлы (может потребоваться дважды щелкнуть ее, если она уже активна).
- Ссылка теперь будет отображаться в вашем проекте . щелкните правой кнопкой мыши и выберите "Включить в проект".
Я следую этим шагам и работаю над несколькими разными проектами.
Примечание: mklink не будет работать с файловой системой FAT. Это для NTFS. Управление исходным кодом нанесет ущерб символическим ссылкам. Git нужны права администратора или просто проверяет файл. Не могли бы вы уточнить? Я стараюсь избегать символических ссылок, поэтому я не пробовал использовать их с Git, но я знаю, что установщик Git упоминает поддержку символических ссылок. Некоторые клиенты git с графическим интерфейсом будут преобразовывать символическую ссылку в фактический файл (я полагаю, потому что они не запускаются с правами администратора). Я избегаю символических ссылок в git в основном потому, что они могут быть непоследовательными. Кроме того, вы не можете быть уверены, что цель символической ссылки находится на всех машинах, на которые клонируется репозиторий git. Я считаю, что репозиторий git должен быть самодостаточным, без загадочных зависимостей.Чтобы расширить ответ Ючена, вы можете включить файлы и пути в качестве ссылки. Это не то же самое, что добавление существующих элементов, потому что при этом не создается дополнительная копия в структуре папок вашего проекта. Это полезно, если вы хотите, чтобы одна каноническая папка / файл и т. Д. Использовалась во множестве разных мест, но вы хотите поддерживать только одну ее версию / копию.
Вот пример того, что вы можете добавить в файл *.csproj для создания ссылки
$(Codez) - это определенная мной переменная среды Windows, вы можете использовать встроенные переменные среды таким же образом.
Я думаю, что нашел способ сделать это с помощью Compile Include = ". \ Code ***. Cs" Я хотел рекурсивно включить код в мою папку Code.
Вот пример файла проекта.
В Visual Studio 2013 я не мог заставить работать «Включить в проект» при щелчке правой кнопкой мыши по папке. Что действительно помогло, так это расширение папки, выбор всех файлов и выбор «Включить в проект». Это было довольно утомительно, так как вам нужно делать каждую папку одну за другой (но, по крайней мере, вы можете делать все файлы в каждой папке за один раз), и, похоже, сохраняет путь к файлу (вы можете увидеть это, просмотрев свойства файла и глядя на параметр «Относительный путь».)
Я надеюсь использовать это для развертывания некоторых файлов данных в проекте установщика Visual Studio, и, похоже, он подбирает включенные файлы и сохраняет их пути.
Visual Studio 2017 и новее поддерживают новый облегченный формат .csproj , известный как «формат SDK». Одним из нескольких преимуществ этого формата является то, что вместо списка файлов и папок, которые включены , файлы по умолчанию включаются подстановочными знаками. Таким образом, в этом новом формате ваши файлы и папки, добавленные в проводнике или в командной строке, будут получены автоматически!
Проекты библиотеки классов
Насколько я могу судить, единственный способ сделать это в VS2010 сродни методу перетаскивания. Щелкните правой кнопкой мыши решение, к которому вы хотите добавить проект. В меню приложения будет пункт добавить . Открыв его, вы обнаружите, что один из вариантов - добавить в решение существующий проект.
В открывшемся диалоговом окне перейдите к папке, содержащей файл проекта для решения, и выберите его. VS, как часть импорта этого файла проекта, также импортирует весь каталог и, я предполагаю, все подчиненные каталоги, которые являются частью этого проекта.
Поскольку для этого требуется существующий файл проекта, будет невозможно импортировать дерево каталогов, пока это дерево не будет преобразовано в проект.
Я не нашел удовлетворительного ответа, поэтому разобрался сам.
Вот вам ответ, если вы хотите добавить в свой проект внешние исходные коды и не хотите копировать все коды целиком. У меня много зависимостей от других gits, и они обновляются ежечасно, если не ежеминутно. Я не могу копировать каждый час для синхронизации. Вот что вам нужно сделать.
Предположим, это структура:
/ корень / projA / src
/ root / projA / включает
/ корень / projB / src
/ root / projB / включает
/ корень / yourProj / src
/ root / yourProj / включает
- Запустите свое решение VS.
- Щелкните правой кнопкой мыши имя проекта прямо под Решением.
- Затем нажмите «Добавить», «Новый фильтр», введите имя «projA» для projA.
- Щелкните правой кнопкой мыши «projA», нажмите «Добавить», «Новый фильтр», введите имя «src».
- Щелкните правой кнопкой мыши «projA», нажмите «Добавить», «Новый фильтр», введите имя «включает».
- Щелкните правой кнопкой мыши «projA» / «src», выберите «Добавить», «Существующий элемент», затем перейдите к / root / projA / src, чтобы добавить все исходные коды или один за другим те, которые вы хотите.
- Сделайте то же самое для «projA» / «включает»
Сделайте то же самое для projB. Теперь внешние / существующие проекты за пределами вашего присутствуют в вашем решении / проекте. VS скомпилирует их вместе. Вот уловка. Поскольку projA и projB являются виртуальными папками в вашем проекте, компилятор может не найти файл projA / includes.
Если он не находит projA / includes, щелкните проект правой кнопкой мыши и выберите «Свойства».
Одно предостережение: если есть дублированные файлы заголовков / заголовков, «исключить из проекта» в «Заголовочном файле» на самом деле не работает. Это ошибка в VS.
В Visual Studio 2017 вы переключаетесь между представлением решения и представлением папки вперед и назад. Я думаю, что это лучший вариант, потому что он сохранит чистоту раствора. Я использую это для редактирования файлов .gitignore, .md и т. Д.
Читайте также: