@romaro

Правильно ли объединять WPF и WinForms проекты в одно решение (solution)?

Мне нужно создать два простых приложения доступа к одним и тем же данным: одно на WPF, второе на WinForms. Правильным ли будет объединить эти проекты в одно решение? Общих ресурсов не много, но они есть: dao-классы, SessionStorage и пиктограммы.

Как я понял из документации, solution придуманы для того, чтобы объединять проекты с общей бизнес-логикой или доменной областью. Вопрос к опытным разработчикам: есть ли подводные камни при объединении проектов на разных фреймворках в один солюшн?

UPD. Нашел неплохую обзорную статью по этой теме.
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
@fire64
Разработчик Unity
Нет, никаких подводных камней нет.
Решения - просто позволяют одновременно работать с несколькими проектами, оно не создаёт никаких зависимостей между ними.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C#
В дотнете внешние и межпроектные зависимости (PackageReference, ProjectReference) прописываются и ставятся для каждого проекта отдельно. Более того, по умолчанию каждый library-проект также становится самостоятельным NuGet-пакетом, если в настройках включить сборку последнего.

Солюшен - это лишь примочка для объединения нескольких проектов во что-то, что можно собрать одной командой в IDE или в консоли. Ну и открывать сразу всё в IDE тоже удобно.

Лично я рекомендую в большинстве случаев пользоваться подходом "один Git-репозиторий - один солюшен - много проектов". Репозиторий - единица версионирования (т.е. ВСЕ проекты в репе всегда имеют одинаковую версию), проект/пакет - единица управления зависимостями.

Итого имеем следующие выводы:
  • вы собираетесь притащить к себе довольно толстые библиотеки, "подружить" которые в рамках одного исполняемого бинарника будет непросто. Т.к. для шарповых MSBuild-проектов каждый проект (csproj) собирается в отдельную сборку (assembly), то логично иметь WPF и WinForms варианты в виде отдельных проектов (и в виде двух разных бинарей на выходе)
  • если вы планируете общий релиз для обоих приложений - т.е. когда не бывает так, что допустим WPF-приложение релизится, а WinForms - нет - тогда делайте один репозиторий и один солюшен с несколькими проектами;
  • если вы планируете независимый релиз для каждого приложения - тогда другая история, но надеюсь вам это не нужно
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Смотрите
6321bd1d3f337135304274.png

Вот например солюшен
В нем общие модельки между апи и мобильным приложением.
тут и netstandart2.1 net6 и nodejs

Все собирается из одного места, и переиспользуются модели в куче мест
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы