Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Миграция через несколько версий фреймворка

709  1 2 все
alex445 коренной житель21.05.22 14:31
NEW 21.05.22 14:31 
Последний раз изменено 21.05.22 14:43 (alex445)

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 я могу. Даже компилится почти без проблем - ну там пофиксил парочку. Проблемы начинаются при запуске - куча ошибок вида "не так сконфигурил сервисы", "нет такого обработчика" и прочее. Если даже удастся починить какую-нибудь главную страницу, загуглив отдельные решения, то не факт, что всё остальное заработает. Т.к. по сути я из всех урководств по последовательным миграциям просто вырвал из контекста нужные фиксы для конкретной страницы, а запрос к остальным всё равно может вывалить исключение.


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


(Кстати, там чуть подальше и про котов семизнаков есть. )) )

#1 
AlexNek патриот21.05.22 15:30
AlexNek
21.05.22 15:30 
в ответ alex445 21.05.22 14:31
Короче, хочу волшебную палочку

Можно хотеть сколько угодно.


Хочу мигрировать на .NET 5

Многое зависит от проекта и кто его написал.


Лучше начать новый проект на 6.0 и затем добавлять части из старого.

Некоторые можно будет просто скопировать, а некоторые переписать с 0-ля

#2 
alex445 коренной житель21.05.22 21:28
NEW 21.05.22 21:28 
в ответ AlexNek 21.05.22 15:30, Последний раз изменено 21.05.22 21:29 (alex445)

Вы бы с чего начали добавлять части? С БД, с моделей, ещё с чего-то?

#3 
AlexNek патриот21.05.22 22:08
AlexNek
NEW 21.05.22 22:08 
в ответ alex445 21.05.22 21:28
с чего начали добавлять части?

тяжело сказать ничего не зная. Желательно чтобы на каждом этапе можно было что то показать.

Если много проектов, то начать с самого малого и простого, добавив юнит тесты если их нет. Очень рекомендую данное расширение https://fluentassertions.com/ для тестов


#4 
alex445 коренной житель21.05.22 22:26
NEW 21.05.22 22:26 
в ответ AlexNek 21.05.22 22:08
добавив юнит тесты если их нет

Я так понимаю, их можно добавить, если понимаешь, что делает приложение? А если нигде описания нет, то и смысла нет добавлять? Ну или сначала надо будет каким-то образом понять работу приложения - т.е. неделями изучать код, запускать, тестировать, а потом придумать для этого тесты?

#5 
AlexNek патриот22.05.22 11:26
AlexNek
NEW 22.05.22 11:26 
в ответ alex445 21.05.22 22:26
если понимаешь, что делает приложение?

Как то я слабо представляю процесс обновления приложения без понимания как оно работает.

А написание тестов - хороший способ понять как работает приложение. Параллельно еще найдутся новые ошибки.

#6 
alex445 коренной житель22.05.22 13:40
NEW 22.05.22 13:40 
в ответ AlexNek 22.05.22 11:26

Чтобы понять, что делает большое приложение, на которое нет документации, это надо анализировать код неделями и может даже месяцами. А если сделать по-другому - как вы посоветовали? Скажем, я могу взять отдельные классы без зависимостей (базовые) и скопировать их в свежесозданный проект на новой версии фреймворка. Затем добавить зависимые от них классы и так до самого верха. По мере копирования и буду знакомиться с функциональностью приложения. Ну и по ходу же решать проблемы с новой версией - скажем, новый механизм авторизации, другая ORM и т.п. С таким подходом получается, что если тысты и можно начать писать, то лишь спустя долгое время, когда значительная часть проекта будет уже переписана-скопирована?

#7 
AlexNek патриот22.05.22 15:45
AlexNek
NEW 22.05.22 15:45 
в ответ alex445 22.05.22 13:40, Последний раз изменено 22.05.22 19:58 (AlexNek)
Чтобы понять, что делает большое приложение, на которое нет документации, это надо анализировать код неделями и может даже месяцами

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

Вполне достаточно поработать с кем то, с уже работающим приложением. Ну или вначале самому пройтись по всем менюшкам и формам, а потом поспрашивать непонятки.

Если есть база, то создать ее модель. По ней сразу будет видно, что ожидать. Подозреваю, что там тот еще бардак.

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

#8 
AlexNek патриот22.05.22 15:52
AlexNek
NEW 22.05.22 15:52 
в ответ alex445 22.05.22 13:40
Скажем, я могу взять отдельные классы без зависимостей

для этого их нужно вначале найти. Но я бы начал с UI


новый механизм авторизации, другая ORM

Важные вещи желательно знать до то как.

А то вот было бы интересно. Привозят пациента с болями в животе, а врач говорит - не переживайте, сейчас разрежем, посмотрим и решим, что делать. Может просто желудок промыть надо спок

#9 
AlexNek патриот22.05.22 16:01
AlexNek
NEW 22.05.22 16:01 
в ответ alex445 21.05.22 14:31
проекта на .NET Core 2.0. Хочу мигрировать на .NET 5

Что еще пропустили - вопрос зачем? Что от этого ожидается? Какой смысл?

#10 
Murr патриот22.05.22 19:32
Murr
NEW 22.05.22 19:32 
в ответ AlexNek 22.05.22 15:45

возможно, будут проблема с внешними либами

------

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

#11 
AlexNek патриот22.05.22 20:01
AlexNek
NEW 22.05.22 20:01 
в ответ Murr 22.05.22 19:32
С .Нет-овскими - тоже будут.

Ну так остальное в дополнение. Работа с JS кардинально изменилась или https://devblogs.microsoft.com/dotnet/asp-net-core-6-and-a...

#12 
alex445 коренной житель22.05.22 21:29
NEW 22.05.22 21:29 
в ответ Murr 22.05.22 19:32, Последний раз изменено 22.05.22 21:33 (alex445)
возможно, будут проблема с внешними либами
------
С .Нет-овскими - тоже будут. Сейчас не помню, но случалось натыкаться и на отсутствие методов, и на перенос классов...

Не просто возможно, а будут однозначно. Я уже пробовал там кое-что обновить-изменить - куча проблем и того, что надо поправить в связи с изменившимися библиотеками. Но это и было ожидаемо. Просто у меня опыта в подобных миграциях больших проектов нет, вот и хотел узнать, с чего начать лучше.


И что значит "с дотнетовскими"? Когда перепрыгиваешь через несколько версий, мало в каком фреймворке остаются без изменений классы и методы. По сути, такие проекты проще заново написать по спецификации или набору требований, чем пытаться старьё как-то мигрировать. Но заказчик хочет без переписывания. Похоже, он ещё сам толком не понимает, что прыгнуть сразу через 15 лет технологий - это будет в любом случае переписывание и копирование кода класс за классом, с изменениями под новые версии фреймворка.

#13 
alex445 коренной житель22.05.22 21:31
NEW 22.05.22 21:31 
в ответ AlexNek 22.05.22 20:01

Ну так остальное в дополнение. Работа с JS кардинально изменилась или https://devblogs.microsoft.com/dotnet/asp-net-core-6-and-a...


Кстати, вы работали с Блазором - как там он с джаваскриптом взаимодействует? Вроде, в Блазоре вообще можно без джаваскрипта обойтись?


Там же две версии Блазора есть - клиенсткая через WebAssembly, и серверная. В серверной тоже можно забить на джаваскрипт и все скрипты на Шарпе писать?

#14 
AlexNek патриот22.05.22 21:50
AlexNek
NEW 22.05.22 21:50 
в ответ alex445 22.05.22 21:31
как там он с джаваскриптом взаимодействует?

Замечательно

https://babylonblazordemoapp.azurewebsites.net/


Поэтому и говорю что JS interop очень сильно изменился по сравнению с 2.0


Вроде, в Блазоре вообще можно без джаваскрипта обойтись?

его там просто не видно. Почти впф можно сказать.

#15 
alex445 коренной житель23.05.22 11:40
NEW 23.05.22 11:40 
в ответ AlexNek 22.05.22 21:50, Последний раз изменено 23.05.22 11:42 (alex445)
Замечательно
https://babylonblazordemoapp.azurewebsites.net/

Хы! Я этим Вавилоном баловался ещё на Сильверлайте. Чуваки вовремя подсуетились, не стали бросать движок, а перешли на JS. Правда, толку в этом браузерном 3D всё равно нет - нет крупных проектов и не планируется. Максимум как просмотрщик товаров в разных магазинах. Да и то те же автопроизводители, например, имея полноценные 3Д модели своих авто, предпочитают в просмотрщике тупо ряд картинок показать вместо свободного кручения 3Д модели. Т.е. создатели этих движков пыжаться, пыжаться, а толку нет. Ну это так, отвлёкся.

#16 
AlexNek патриот23.05.22 12:41
AlexNek
NEW 23.05.22 12:41 
в ответ alex445 23.05.22 11:40
Правда, толку в этом браузерном 3D всё равно нет

Вот именно это интересовало меньше всего. Просто довольно хороший пример для взаимодействий с JS.

#17 
7495 местный житель27.05.22 11:46
7495
NEW 27.05.22 11:46 
в ответ alex445 21.05.22 14:31
Есть, скажем, проекта на .NET Core 2.0. Хочу мигрировать на .NET 5.

Я вот чо хотел спросить, а нельзя мигрировать автоматически? Раньше вместе с книгами прилагали диски с сырцами.

короче я как-то один такой проект запустил - Вижаульстудио стал переделывать код на автомате, переставлять функции.

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


Потом у меня появился программист, и снова такая же проблема - все сишарповские программы не работают, не компилируются, а эксешники не запускаются!


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

Вот с ЯваСкриптом совсем другое дело - все программки даже из 90 работают как надо и радуют до сих пор. Слушайте Виталика!

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#18 
alex445 коренной житель27.05.22 20:16
NEW 27.05.22 20:16 
в ответ 7495 27.05.22 11:46
Вот с ЯваСкриптом совсем другое дело - все программки даже из 90 работают как надо и радуют до сих пор.

Программки из 90-х работают, а здоровые проекты, написанные на джаваскриптовых библиотеках 7-8-летней давности - нет.

#19 
Срыв покровов патриот27.05.22 21:03
NEW 27.05.22 21:03 
в ответ alex445 27.05.22 20:16

а чего это они должны перестать работать?

#20 
1 2 все