2017-02-06 4 views
0

У меня есть небольшой проект, который нуждается в .net версии 4.5 из-за сжатия. Это мой App.config:Установить целевую структуру до 4.5

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup> 
</configuration> 

Но когда я пытаюсь запустить программу на 7 системы Windows, акции, он говорит, что мне нужно установить v4.0.30319. Таким образом, пользователю сначала нужно установить v4.0, ТОГДА v4.5. Есть ли способ установить его, чтобы по умолчанию понадобилось v4.5?

Я использую VS2015, если что-нибудь изменится

+0

Есть ли у вас другие компоненты/ссылки, требующие меньшей версии .NET? Причина, по которой я спрашиваю: если вы полностью удалите поддерживаемый тег Runtime из вашего app.config, тогда загрузчик .NET примет во внимание из вашего проекта. Если это .NET 4.5, то это по умолчанию должно быть вашей минимально необходимой версией .NET. – PuerNoctis

+1

Непонятно из вашего вопроса: используете ли вы установку для установки необходимых компонентов или нет? – Dan

+1

@ Да нет, это было бы излишним в этом проекте. – Rothens

ответ

0

По-видимому, в соответствии со статьей 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 самостоятельно за один ход без какой-либо «начальной загрузки». Под этим я хочу написать небольшую программу, которая проверяет реестр на установленную версию и, если установлена ​​правильная версия, запускает вашу реальную программу.

+0

Так что я не могу выполнить проверку версии за один ход? – Rothens

+0

Я не знаю точно, но я предполагаю, что это так. Надеюсь, кто-то поправит меня по этому поводу, потому что я считаю это очень громоздким. – PuerNoctis

Смежные вопросы