Вопрос из любопытства.
По разным версиям .NET Framework была хорошая совместимость версий друг с другом. Как правило, несложные программы могли работать и на соседних версиях фреймворка, если совпадала версия CLR. И, соответственно, версия языка IL в EXE/DLL файлах. Тоже самое про использование чужих сборок, изначально собранных под соседнюю версию фреймворка.
Соответственно, программа, скомпилированная под FW 4.8 без использования функций появившихся после FW 4.0, могла спокойно заработать на WinXP. Например. А DLL 10-летней давности, написанные в Visual Studio 2010, спокойно подключаются к проектам .NET FW 4.8 (в отличие от DLL для .NET FW 2.0/3.5, которые уже не хотят).
Стало интересно, а что с .NET Core? В гугле толковой информации не нашлось. Что там по совместимости между, допустим, .NET Core 3.1 и .NET Core 3.0 в обе стороны? Или 2.0 и 2.1, 2.1 и 3.1....?
Совместимость по коду, в целом, легко видна в MSDN. А вот про запуск бинарников ничего не понятно.
ну понятно, некорректный вопрос. выбирается же при компиляции целевая среда. совместимость снизу вверх есть практически. что еще надо? а дальше, будет / не будет работать зависит от окружающей среды. и зависит от многих факторов. зачем этот вопрос?
NewDevLab, хочу ради самообразования продолжить вышеуказанную таблицу версиями .NET Core и корочными CLR.
а дальше, будет / не будет работать зависит от окружающей среды. и зависит от многих факторов.
Например? С framework было всё просто. Подходит версия CLR (1.1/2.0/4.0) и разрядность - exe/dll будет работать. Всякие подвохи про прямые вызовы WinAPI и прочее не рассматриваем. Речь про абстрактный Hello world.
Вопрос не про API. А про то, запустится реальный бинарник в другой среде без установки родной, или нет? .NET 4.8 тоже совместим по API с .NET 2.0, но по факту для запуска программ надо доустанавливать .NET 2.0/3.0/3.5.