Как заставить приложение использовать .NET 3.5 или выше? - PullRequest
14 голосов
/ 17 октября 2010

Наше приложение построено с использованием VS 2008, использует Linq и для Target Framework установлено значение .NET Framework3.5.

Работает нормально, если на компьютере установлен только .NET 3.5 или 4.

Однако на машинах, на которых установлены как .NET 2 (или 3.0), так и .NET 4, приложение загружается с помощью .NET 2 и аварийно завершает работу при доступе к Linq при поиске библиотек .NET 3.5.

Использование тега в app.config, похоже, не помогает, поскольку оно указывает версию CLR, которая равна 2 в случае .NET 3.5.

Обратите внимание, что наша установка проверяет, что .NET3.5 или выше установлен.

Есть ли способ сообщить приложению о загрузке:

  • наивысший CLR , который он находит, или
  • CLR 4 , если он установлен, и CLR 2 , если CLR 4 не установлен, или
  • CLR 2 , если установлен .NET 3.5установлен и CLR 4 , если не установлен .NET 3.5

(Обратите внимание, что аналогичный вопрос остается без ответа в thРаздел «Содержимое сообщества» документации Элемента )

Ответы [ 4 ]

14 голосов
/ 17 октября 2010

Формирование вопроса привело меня к ответу.Как упомянуто в Документация элемента ,

Когда поддерживаются несколько версий среды выполнения, первый элемент должен указывать наиболее предпочтительную версию среды выполнения, а последний элемент должен указыватьнаименее предпочтительная версия.

Таким образом, способ достижения второго варианта («CLR 4, если он установлен, а CLR 2 - это CLR 4, не установлен») - изменить порядок элементов.в app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

Таким образом .NET 4 будет загружен, если он установлен, и более ранняя версия будет загружена, если нет.

0 голосов
/ 25 июля 2012

.NET Framework версии 3.0 и 3.5 использует версию 2.0.50727 CLR.

0 голосов
/ 11 июня 2012

Другая полезная ссылка - эта страница в MSDN. Это показывает все значения, требуемые в app.config, если вы хотите просто настроить таргетинг на профиль клиента или если вам требуется полный профиль.

0 голосов
/ 02 сентября 2011

Если у вас есть неуправляемый EXE-файл, вызывающий .NET DLL, вам также необходимо создать файл foo.exe.config, содержащий указанный выше блок <startup>....

...