Поместить решение и проект в одном каталоге зачем
Перейти к содержимому

Поместить решение и проект в одном каталоге зачем

  • автор:

Git. Два проекта в одном каталоге

У меня есть базовый проект и проект на его основе. Множество файлов этих проектов не пересекается. Можно ли вести два проекта в одном каталоге? Первое, что приходит на ум — перенести корень git на каталог выше для базового проекта, но может есть какое-то более элегантное решение?

crutch_master ★★★★★
06.07.18 09:26:42 MSK

submodule для пересекающихся?

Deleted
( 06.07.18 09:28:39 MSK )

Вынеси общий код в сабмодуль

anonymous
( 06.07.18 09:29:43 MSK )
Ответ на: комментарий от anonymous 06.07.18 09:29:43 MSK

Если я буду менять общий код, смогу ли я сохранять изменения в этот сабмодуль, и как это делается?

crutch_master ★★★★★
( 06.07.18 09:37:34 MSK ) автор топика
Последнее исправление: crutch_master 06.07.18 09:37:44 MSK (всего исправлений: 1)

Ответ на: комментарий от crutch_master 06.07.18 09:37:34 MSK

Можешь. Они вообще довольно гибкие.

anonymous
( 06.07.18 09:53:57 MSK )
Ответ на: комментарий от Deleted 06.07.18 09:28:39 MSK

ты не шаришь, пока не начнешь молиться Перуну ты не выучишь гит, я тебе это уже говорил. молись.

anonymous
( 09.07.18 15:37:19 MSK )

Короче, я сделал через ветки. Было еще решение переименовать каталог .git и обращаться к репе через —git-dir

crutch_master ★★★★★
( 10.07.18 04:06:24 MSK ) автор топика
Ответ на: комментарий от crutch_master 10.07.18 04:06:24 MSK

Ну и зря. Надо было сделать базовый — submodul’ем, и проект на его основе — надмодулем. Субмодуль бы жил в своей подпапке, а на его основе — каталогом выше. Либо вообще разносить проекты в разные репы — тоже вариант, просто линковать сборщиком уже «по-хитрому».

menangen ★★★★★
( 10.07.18 04:39:53 MSK )
Ответ на: комментарий от menangen 10.07.18 04:39:53 MSK

Может быть и зря, пока поработаю так. В любом случае разнести ветки на 2 проекта не сложно. Сейчас их по сути два. Первая ветка отправляется в базовую репу, потом сливается с проектом-потомком во второй ветке, которая отправляется уже в свою репу.

Субмодуль бы жил в своей подпапке

Файлы разных проектов лежат в одном каталоге и изменения могут пересекаться (например в pom.xml).

crutch_master ★★★★★
( 10.07.18 04:46:33 MSK ) автор топика
Ответ на: комментарий от crutch_master 10.07.18 04:06:24 MSK

Короче, я сделал через ветки. Было еще решение переименовать каталог .git и обращаться к репе через —git-dir

лучше бы молился Перуну

anonymous
( 10.07.18 18:43:49 MSK )
Ответ на: комментарий от crutch_master 10.07.18 04:46:33 MSK

Файлы разных проектов лежат в одном каталоге и изменения могут пересекаться (например в pom.xml).

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

либо действительно, использовать разные ветки. удобно в этом случае ответвляться от какой то обобщенной ветки. я так организую свой профиль (dot files): каждая машина это отдельная ветка, из общего корня

Deleted
( 10.07.18 18:49:42 MSK )
Ответ на: комментарий от menangen 10.07.18 04:39:53 MSK

Подмодули тормозять как павшие грешники. Пытался их как-то использовать, но не пошло.

ox55ff ★★★★★
( 10.07.18 18:56:17 MSK )

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

Но если административно и идеологически проблему не решить, то сабмодули помогут.

Как справедливо замечают, сабмодули — не друзья. Но они лучше всех других костылей.

Deleted
( 10.07.18 18:56:27 MSK )
Ответ на: комментарий от Deleted 10.07.18 18:56:27 MSK

Так там костыльность только в одном, вроде — отсутствие транзитивности при checkout-е(например, в новой ревизии подмодуль был удалён, но при переключении на неё остаётся висеть в untracked). Или есть ещё какие-то проблемные моменты?

Deleted
( 10.07.18 20:10:46 MSK )
Ответ на: комментарий от Deleted 10.07.18 20:10:46 MSK

Именно что, сабы — это не совсем костыли. Это решение довольно нетривиальной задачи. Они просто бесят, но что делать. Поэтому, если можно — лучше избегать. Вон, в линукс-ядре нет сабов, а проект немаленький 🙂

только в одном, вроде — отсутствие транзитивности при checkout

Ну да, . Есть даже двойной ключик у клин git clean -f -f . . Это «одно» и есть суть сабмодулей — механизм внесение в дерево исходников поддиректории, точно указывая при этом номер ревизии, но с отсутствием транзитивности (а иначе, просто используй обычную диру, зачем саб)

Deleted
( 10.07.18 20:25:50 MSK )
Ответ на: комментарий от Deleted 10.07.18 20:25:50 MSK

Ok. Я просто проблем, окромя указанной, не вижу и довольно охотно использую подмодули. Но это всё локалхост, вот я и интересуюсь граблями(с учётом того, что довольно часты негативные мнения на эту тему)

Создавайте проекты и решения Visual Studio, работайте с ними и удаляйте их

Из этой статьи вы узнаете, как создавать с нуля и использовать проекты Visual Studio для хранения артефактов, необходимых для создания приложений. Если вы не знакомы с проектами в Visual Studio, см. этот обзор проектов и решений. Сведения о том, как быстро создать проект из шаблона, см. в статье «Создание нового проекта в Visual Studio».

Проекты содержат объекты, необходимые для создания приложения в Visual Studio, например файлы исходного кода, растровые изображения, значки, а также ссылки на компоненты и службы. Когда вы создаете проект, Visual Studio создает решение, в котором будут содержаться проекты. После этого в решение при необходимости можно добавить другие новые или существующие проекты. Можно также создавать пустые решения. Решения также могут содержать файлы, не связанные с определенным проектом.

Diagram that shows the solution and project hierarchy.

Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Создание проектов в Visual Studio для Mac.

Решения и проекты можно просматривать в окне инструментов, которое называется обозревателем решений. На следующем снимке экрана показан пример консольного решения C# в Обозреватель решений, который содержит два проекта: Калькулятор и КалькуляторLibrary. Каждый проект содержит несколько файлов и папок. Полужирным шрифтом выделено имя запускаемого проекта. Этот проект выполняется при запуске приложения. Вы можете выбрать запускаемый проект.

Screenshot of Solution Explorer with two projects.

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

Это говорится, что решения и проекты не требуются для разработки приложений в Visual Studio. Вы также можете открыть код, клонированные из Git или скачанный в другом месте. Дополнительные сведения см. в статье Разработка кода в Visual Studio без использования проектов и решений.

Создание проекта из шаблона проекта

Сведения о том, как выбрать шаблон для создания нового проекта, см. в статье Создание проекта в Visual Studio. А пример проекта и решения, созданного с нуля, а также пошаговые инструкции и пример кода см. в статье Общие сведения о проектах и решениях.

Создание проекта из существующих файлов с текстом программ

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

  1. Последовательно выберите Файл>Создать>Project From Existing Code (Проект из существующего кода).
  2. В мастере создания проекта по существующим файлам с кодом выберите в раскрывающемся списке Задать тип проекта нужный тип проекта, а затем нажмите Далее.
  3. В мастере перейдите к месту хранения файлов и введите имя нового проекта в поле Имя. По завершении нажмите кнопку «Готово «.

Этот вариант лучше всего подходит для относительно простой коллекции файлов. Сейчас поддерживаются только типы проектов C++, Apache Cordova, Visual Basic и C#.

Добавление файлов в решение

Если у вас есть файлы, которые относятся к нескольким проектам, например файл сведений для решения или иные файлы, которые относятся к уровню решения, а не отдельного проекта, их можно добавить в само решение. Чтобы добавить элемент в решение, щелкните правой кнопкой мыши узел решения в Обозревателе решений и выберите в контекстном меню пункты Добавить>Новый элемент или Добавить>Существующий элемент.

Файл решения представляет собой структуру для организации проектов в Visual Studio. Он содержит состояние этих сведений в двух файлах: SLN (текстовый файл, общий) и SUO (двоичный, скрытый, параметры решения для конкретного пользователя). Таким образом, решение — это не ресурс, который нужно копировать и переименовывать; вместо этого лучше создать новое решение, а затем добавить в него существующие элементы.

Сравнение файлов

Начиная с версии 17.7 можно сравнить файлы в Обозреватель решений с помощью параметров контекстного меню правой кнопкой мыши. Дополнительные сведения см. в разделе «Средство сравнения файлов» на странице «Сведения о Обозреватель решений».

Создание проекта .NET, настроенного для конкретной версии .NET Framework

При создании проекта .NET Framework можно указать определенную версию платформы .NET Framework, которую он должен использовать. (При создании проекта .NET Core версию платформы указывать не нужно.)

Чтобы указать версию платформа .NET Framework, выберите раскрывающееся меню Framework на странице «Настройка нового проекта«.

Screenshot of the Framework selector in the

Screenshot of the Framework selector in the

Создание пустых решений

Вы также можете создавать пустые решения, не содержащие проектов. Это может быть предпочтительно, если вы хотите создать решение и проекты с нуля.

Создание пустого решения

  1. В строке меню выберите Файл>Создать>Проект.
  2. В поле поиска на странице Создание проекта введите решение.
  3. Выберите шаблон «Пустое решение » и нажмите кнопку «Далее«.
  4. Введите значение Имя и Расположение для решения, а затем нажмите Создать.

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

Как было сказано ранее, вы также можете открывать файлы кода без использования проекта или решения. Сведения о разработке кода таким образом см. в статье Разработка кода в Visual Studio без использования проектов и решений.

Удаление решения, проекта или элемента

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

Чтобы полностью удалить решение или другой компонент из системы, удалите папку, содержащую файлы SLN и SUO решения, используя проводник Windows. (Перед удалением решения вы, возможно, захотите выполнить резервное копирование проектов и файлов на случай, если они вам понадобятся позже).

SUO-файл является скрытым и не отображается, если проводник имеет параметры по умолчанию. Для отображения скрытых файлов в меню Вид проводника установите флажок Скрытые элементы.

Окончательное удаление решения

Вы можете перейти к проводнику в Windows, используя Обозреватель решений в Visual Studio. Это делается следующим образом.

  1. В Обозревателе решений щелкните правой кнопкой мыши меню (контекстное меню) решение, которое вы хотите удалить, и выберите Открыть папку в проводнике.
  2. В проводнике перейдите на один уровень вверх.
  3. Выберите папку, содержащую решение, и нажмите клавишу DELETE.

Связанный контент

  • Общие сведения о проектах и решениях
  • Управление свойствами проектов и решений
  • Фильтрация решений в Visual Studio
  • Примеры кода от разработчиков

Поместить решение и проект в одном каталоге зачем

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2024. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Как связать 2 проекта в 1 решении?

Было создано 1 решение с 1 проектом, в котором располагается main функция.
После этого был создан пустой проект в этом решении.
Основной проект был помечен как StartUp.
В свойстве основного проекта было добавлено в поле «Дополнительные каталоги включаемых файлов» $(SolutionDir)emptyproject (его папка это emptyproject).
Все что написано в .h файлах основной проект видит, но то, что написано в .cpp файлах включаемого проекта, основной проект не видит. Это стало понятно, потому что ошибки LNK2019 исчезали при переносе реализации функции из .cpp в .h файлы.
Как это исправить?
Ошибки в include нет.
Использована Microsoft Visual Studio Community 2022.

  • Вопрос задан более года назад
  • 174 просмотра

Комментировать

Решения вопроса 1

Делайте проект статической библиотекой (lib), заголовочные файлы включайте в ваш второй проект и линкуйтесь с полученной lib библиотекой.

Ответ написан более года назад

Павел Соколов @communistic_sistema Автор вопроса

Дополню ответ, кроме .lib типизации нужно было добавить внешние зависимости (добавить ссылку)

Ответы на вопрос 0

Ваш ответ на вопрос

Войдите, чтобы написать ответ

visual-studio

  • Visual Studio
  • +1 ещё

Как добавить кнопку Open with Visual Studio?

  • 1 подписчик
  • 03 мая
  • 136 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *