По-видимому, в соответствии со статьей MSDN по <supportedRuntime>
(https://msdn.microsoft.com/en-US/library/w4atty68(v=vs.110).aspx), текущее решение является правильным способом проверить версию. Кажется, что .NET 4.0 Update 3 Framework требуется как основа для любых будущих версий. Но это предположение, я был бы рад быть исправлен здесь.
Обновление: Я провел подробное исследование, и .NET 4.5 эффективно заменяет .NET 4.0 на систему. В соответствии со статьей, о которой я упоминал, кажется, что все, начиная с .NET 4.0 и выше, похоже, идентифицировано с версией «v4.0.30319» в метаданных сборок, поэтому загрузчик .NET всегда будет считает тем, что сначала должна быть установлена версия.
Но так как .NET 4.x заменяет старый, я бы предположил, что вы можете установить .NET 4.5+ напрямую, без необходимости устанавливать .NET 4.0 в первую очередь.
Вкратце: я предполагаю, что вы можете установить .NET 4.5 напрямую, не устанавливая сначала .NET 4.0. Если у пользователя этого нет, приложение будет сообщить ему, чтобы установить 4.0, что не обязательно, но это то, что PE сообщает загрузчику. Я не думаю, что вы можете проверить .NET 4.5 самостоятельно за один ход без какой-либо «начальной загрузки». Под этим я хочу написать небольшую программу, которая проверяет реестр на установленную версию и, если установлена правильная версия, запускает вашу реальную программу.
Есть ли у вас другие компоненты/ссылки, требующие меньшей версии .NET? Причина, по которой я спрашиваю: если вы полностью удалите поддерживаемый тег Runtime из вашего app.config, тогда загрузчик .NET примет во внимание из вашего проекта. Если это .NET 4.5, то это по умолчанию должно быть вашей минимально необходимой версией .NET. –
PuerNoctis
Непонятно из вашего вопроса: используете ли вы установку для установки необходимых компонентов или нет? – Dan
@ Да нет, это было бы излишним в этом проекте. – Rothens