Миграция через несколько версий фреймворка
C#, .NET.
Есть, скажем, проекта на .NET Core 2.0. Хочу мигрировать на .NET 5. У Майкрософт есть куча руководств, как мигрировать на соседнюю версию - например. Там слева в оглавлении есть статьи типа 2.0 -> 2.1, 2.1 -> 2.2, и так до 3.1 и потом на 5.0. Т.е. если хочешь сразу через несколько версий перескочить, надо последовательно все шаги выполнить? Или есть способы сразу с 2.0 -> 5.0? Проект большой - десятки подпроектов.
Просто поменять в свойствах проектов версию фреймворка-то 2.0 -> 5.0 я могу. Даже компилится почти без проблем - ну там пофиксил парочку. Проблемы начинаются при запуске - куча ошибок вида "не так сконфигурил сервисы", "нет такого обработчика" и прочее. Если даже удастся починить какую-нибудь главную страницу, загуглив отдельные решения, то не факт, что всё остальное заработает. Т.к. по сути я из всех урководств по последовательным миграциям просто вырвал из контекста нужные фиксы для конкретной страницы, а запрос к остальным всё равно может вывалить исключение.
Короче, хочу волшебную палочку - чтобы одна короткая статья - прочитал и молча поправил всё за денёк. Волшебный пендель на штудирование всех руководств по последовательным миграциям не предлагать. ))
(Кстати, там чуть подальше и про котов семизнаков есть. )) )
Короче, хочу волшебную палочку
Можно хотеть сколько угодно.
Хочу мигрировать на .NET 5
Многое зависит от проекта и кто его написал.
Лучше начать новый проект на 6.0 и затем добавлять части из старого.
Некоторые можно будет просто скопировать, а некоторые переписать с 0-ля
с чего начали добавлять части?
тяжело сказать ничего не зная. Желательно чтобы на каждом этапе можно было что то показать.
Если много проектов, то начать с самого малого и простого, добавив юнит тесты если их нет. Очень рекомендую данное расширение https://fluentassertions.com/ для тестов
добавив юнит тесты если их нет
Я так понимаю, их можно добавить, если понимаешь, что делает приложение? А если нигде описания нет, то и смысла нет добавлять? Ну или сначала надо будет каким-то образом понять работу приложения - т.е. неделями изучать код, запускать, тестировать, а потом придумать для этого тесты?
Чтобы понять, что делает большое приложение, на которое нет документации, это надо анализировать код неделями и может даже месяцами. А если сделать по-другому - как вы посоветовали? Скажем, я могу взять отдельные классы без зависимостей (базовые) и скопировать их в свежесозданный проект на новой версии фреймворка. Затем добавить зависимые от них классы и так до самого верха. По мере копирования и буду знакомиться с функциональностью приложения. Ну и по ходу же решать проблемы с новой версией - скажем, новый механизм авторизации, другая ORM и т.п. С таким подходом получается, что если тысты и можно начать писать, то лишь спустя долгое время, когда значительная часть проекта будет уже переписана-скопирована?
Чтобы понять, что делает большое приложение, на которое нет документации, это надо анализировать код неделями и может даже месяцами
Без знания каких то метрик трудно судить о сложности проекта, но если для анализа нужны месяцы то сколько же времени понадобится для его обновления?
Вполне достаточно поработать с кем то, с уже работающим приложением. Ну или вначале самому пройтись по всем менюшкам и формам, а потом поспрашивать непонятки.
Если есть база, то создать ее модель. По ней сразу будет видно, что ожидать. Подозреваю, что там тот еще бардак.
Еще возможно, будут проблемы с внешними либами. Некоторые могут просто не обновится или изменить интерфейсы кардинально.
Скажем, я могу взять отдельные классы без зависимостей
для этого их нужно вначале найти. Но я бы начал с UI
новый механизм авторизации, другая ORM
Важные вещи желательно знать до то как.
А то вот было бы интересно. Привозят пациента с болями в животе, а врач говорит - не переживайте, сейчас разрежем, посмотрим и решим, что делать. Может просто желудок промыть надо
С .Нет-овскими - тоже будут.
Ну так остальное в дополнение. Работа с JS кардинально изменилась или https://devblogs.microsoft.com/dotnet/asp-net-core-6-and-a...
возможно, будут проблема с внешними либами
------
С .Нет-овскими - тоже будут. Сейчас не помню, но случалось натыкаться и на отсутствие методов, и на перенос классов...
Не просто возможно, а будут однозначно. Я уже пробовал там кое-что обновить-изменить - куча проблем и того, что надо поправить в связи с изменившимися библиотеками. Но это и было ожидаемо. Просто у меня опыта в подобных миграциях больших проектов нет, вот и хотел узнать, с чего начать лучше.
И что значит "с дотнетовскими"? Когда перепрыгиваешь через несколько версий, мало в каком фреймворке остаются без изменений классы и методы. По сути, такие проекты проще заново написать по спецификации или набору требований, чем пытаться старьё как-то мигрировать. Но заказчик хочет без переписывания. Похоже, он ещё сам толком не понимает, что прыгнуть сразу через 15 лет технологий - это будет в любом случае переписывание и копирование кода класс за классом, с изменениями под новые версии фреймворка.
Ну так остальное в дополнение. Работа с JS кардинально изменилась или https://devblogs.microsoft.com/dotnet/asp-net-core-6-and-a...
Кстати, вы работали с Блазором - как там он с джаваскриптом взаимодействует? Вроде, в Блазоре вообще можно без джаваскрипта обойтись?
Там же две версии Блазора есть - клиенсткая через WebAssembly, и серверная. В серверной тоже можно забить на джаваскрипт и все скрипты на Шарпе писать?
как там он с джаваскриптом взаимодействует?
Замечательно
https://babylonblazordemoapp.azurewebsites.net/
Поэтому и говорю что JS interop очень сильно изменился по сравнению с 2.0
Вроде, в Блазоре вообще можно без джаваскрипта обойтись?
его там просто не видно. Почти впф можно сказать.
Замечательно
https://babylonblazordemoapp.azurewebsites.net/
Хы! Я этим Вавилоном баловался ещё на Сильверлайте. Чуваки вовремя подсуетились, не стали бросать движок, а перешли на JS. Правда, толку в этом браузерном 3D всё равно нет - нет крупных проектов и не планируется. Максимум как просмотрщик товаров в разных магазинах. Да и то те же автопроизводители, например, имея полноценные 3Д модели своих авто, предпочитают в просмотрщике тупо ряд картинок показать вместо свободного кручения 3Д модели. Т.е. создатели этих движков пыжаться, пыжаться, а толку нет. Ну это так, отвлёкся.
Есть, скажем, проекта на .NET Core 2.0. Хочу мигрировать на .NET 5.
Я вот чо хотел спросить, а нельзя мигрировать автоматически? Раньше вместе с книгами прилагали диски с сырцами.
короче я как-то один такой проект запустил - Вижаульстудио стал переделывать код на автомате, переставлять функции.
я испугался искусственного интеллекта, закрыл, прошло много лет.
Потом у меня появился программист, и снова такая же проблема - все сишарповские программы не работают, не компилируются, а эксешники не запускаются!
К чему пришел к выводу, что сишарп это ненадёжная технология, а полный развод чтобы лохи обогащали БилГейтса.
Вот с ЯваСкриптом совсем другое дело - все программки даже из 90 работают как надо и радуют до сих пор. Слушайте Виталика!