Re[8]: msbuild поверх xml - была плохая идея?
От: karbofos42 Россия  
Дата: 22.11.23 18:50
Оценка: +1
Здравствуйте, rosencrantz, Вы писали:

R>Насколько велико должно быть желание?


Примерно такое же, как в случае с Maven. Только там заставят и придётся этим заниматься, а в .NET велика вероятность, что и не понадобится никуда руками лазить, всё из коробки работать будет.

R>Я смотрю на проект ~2015 года — зависимости из нугета лежат в packages.config, а в *.csproj — ссылки на конкретные assemblies. Я припоминаю, что одно время когда в студии открываешь солюшн, там надо было руками что-то нажать, чтобы пакеты скачались. Потом вроде появилась какая-то галочка "скачивать автоматически".


Можно было в csproj прописать Target, который это автоматом перед сборкой делал.

R>Разница в культуре. В Gradle/Maven есть плагины — их много, они сами скачиваются и работают. В MSBuild, как ты сам сейчас продемонстрировал, "этого нет, но ведь оно и не надо".


У .NET нормальные шаблоны и та же Visual Studio успешно делает грязную работу по редактированию csproj.
Большинство проектов собирается на этом шаблонном проекте и ничего хитрого им не нужно.
maven и gradle с самого начала в это всё окунают и барахтайся как хочешь.
Мне тут больше нравится подход .NET и всего смежного. Начинающий разработчик и ничего хитрого не мудришь — тыкай кнопки в GUI и всё будет работать.
Понадобилось что-то эдакое изобразить — погружайся в xml и изучай всё это добро.

R>А почему в Microsoft мире на это меньше загоняются? Было бы интересно разобраться, почему большинство задач решается в 2 клика — то ли потому что у Микрософт инструменты сборки такие мощные, то ли потому что инструменты плохие, но об этом все знают — и поэтому никому даже в голову не приходит решить более-менее сложную задачу (которая в том же Gradle будет просто "обычной")


Берём C# и Visual Studio. Просто создаёшь Solution, в нём нужные проекты, между проектам проставляешь взаимосвязи. Нажимаешь F5, всё собралось и запустилось (сборка основного проекта вызовет сборку тех проектов, от которых он зависит, артефакты скопируются в выходную папку и т.д.).
Ноль телодвижений и изучения xml или ещё чего, в два клика в GUI настроилось и работает интуитивно понятно.
То же самое изобразить в maven — придётся статью-другую прочитать и разобраться как сделать корневой pom.xml и
прикрутить к нему pom.xml от проектов и как-то связи между проектами проставить.
Даже hello world вынудит лезть в xml и разбираться что там и как работает.
Опять же, вопрос в выбранном использовании инструментов. Можно в MSBuild всю сборку и деплой засунуть.
Можно оставить только базовую сборку, а разные варианты развёртывания уже в CI реализовать в виде скриптов каких-нибудь.
С maven и другими вопрос такой же. Ну, есть для него плагин для flyway, можно через mvn миграцию БД сделать.
Только куча людей скажет, что это идиотизм, так не надо делать и плагин этот не нужен.

R>А что именно смущает? Слово "Maven" в названии репозитория?


что сборка привязана к репозиторию и транспорту по сути.
На локальной машине у меня могут быть одни настройки, может у меня локальный репозиторий или какой-нибудь собственный, но доступный по адресу 192.168.0.1.
В CI тот же самый репозиторий мне может доступен по адресу 10.0.0.1.
Вместо того, чтобы настроить транспорт для пакетов, мне нужно городить конфиг сборки, где всё это учитывать, заводить разные профили и т.д.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.