Начиная с .NET 4.5 вы не можете реально использовать System.Environment.Version
(он вернет только 4.0. {Что-то}, что позволяет вам убедиться, что вы "по крайней мере" на 4.0, но не сообщать вам, какая актуальная версия доступна если вы не можете отобразить полный список номеров сборки в).
Вместо этого (как упомянуто @ jim-w) вы должны проверить реестр на "простую" таблицу поиска. Это немного смешно и, учитывая специфику Windows, не работает для .NET Core ...
Однако ... начиная с .NET 4.7.1, они перенесли обратно класс из .NET Core в полную структуру, и теперь вы можете проверить System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription
К сожалению, он возвращает строку с: «.NET Core», «.NET Framework» или «.NET Native» перед номером версии - так что у вас еще есть какой-то синтаксический анализ.