Есть вопрос, связанный с обратной совместимостью. Я всегда думал, что обратная совместимость была в том, что если я скомпилировал что-то на более низкой. net версии, таким образом, не нужно устанавливать эту предыдущую версию, если у меня уже установлена улучшенная версия, чтобы иметь возможность запустить ее на клиентский компьютер.
Но, очевидно, это также относится к компиляции проекта в. net 4.8 и его запуску в системе, где. net 4.8 не установлен. Например, я использовал виртуальную машину Windows 7 SP1, на которой установлен только. net 4 Client Profile. Чтобы проверить это, я создал небольшое приложение WPF с двумя кнопками.
Кнопка # 1 asyn c и вызывает асин c функцию, которая не поддерживается в. net 4
Кнопка # 2 - это нечто совершенно простое, просто вызывая MessageBox, ничего особенного.
Моя виртуальная машина может нормально работать. net 4.8 .exe-скомпилированный .exe, две кнопки появляются, Button # 2 выводит мой MessageBox, и он выдает исключение, только если я запускаю то, что реализовал в кнопке №1, что потребует. net 4.8 (исключение PresentationCore TypeLoad).
Я не знал, что это было возможно, я всегда думал, что это приведет к ошибке, что. NET 4.8 не будет установлен, если я попытаюсь запустить что-то скомпилированное в этой версии.
TL; DR - есть документация где-то в MSDN или в блоге от. NET разработчиков, что подтверждает нормальное поведение, возможность запуска приложений, скомпилированных на более новой версии. net версия, которая не установлена на C lient OS?