Как вы справляетесь с обратной / прямой пересылкой.Net Framework совместимость (и распространение программного обеспечения)?
Допустим, я создал консольное приложение (для простоты, нет сложных зависимостей от версий GUI или веб-фреймворков) с использованием.Net 4.5. В следующем году выйдет ".Net 5", и я хочу обновить свое приложение, чтобы использовать новые модные API (для повышения производительности, читаемости исходного кода и т. Д.). Однако я все еще хочу сохранить (исправления критических ошибок и т. Д.) Предыдущую версию приложения для пользователей, которые не обновили свою среду выполнения.
Как справиться с этой ситуацией? Нужно ли сделать 2 исполняемых файла доступными и попросить пользователей загрузить тот, который подходит, или есть способ распространить один исполняемый файл / установщик, который определяет, какая версия будет запускаться автоматически?
Или это правильный вопрос? Если я хочу продолжать поддерживать пользователей на "старой" .Net 4.5, я обязан продолжать сборку ТОЛЬКО на этой платформе?
1 ответ
Многие инсталляторы, такие как Wix Toolset, могут предоставить способ реализации пользовательских действий, чтобы вы могли определить, какая последняя версия фреймворка установлена в целевой системе, и решить, какой исполняемый файл там развернуть. Прочтите эту статью Wix Toolset об обнаружении версии.NET Framework.
С другой стороны, вам нужно будет поддерживать ветвь исходного кода для каждой целевой версии платформы, если вы хотите использовать новые функции, недоступные в предыдущих версиях платформы, объединять изменения и делать их совместимыми.
Если функции, используемые в вашем коде, очень ограничены, вы все равно можете использовать директивы препроцессора, такие как #if NETFX_45
или любой символ компиляции, который вы можете добавить в свои проекты и скомпилировать в ту или иную версию фреймворка на основе условий препроцессора.
В любом случае, ваше окончательное решение будет сочетать правильную обработку версий кода и создание пользовательских действий установщика для определения целевой системы пользователя.