Как заставить приложение, скомпилированное для целевой платформы .NET Framework 4, работать в среде .NET Framework 4.6.1?
Я провел значительное исследование и не нашел подходящего ответа. Вот сценарий.
У меня есть приложение, которое было скомпилировано для целевой платформы .NET Framework 4. Во время выполнения я хочу, чтобы это приложение действительно выполнялось в .NET Framework 4.6.1. Пока я нашел два варианта.
Перекомпилируйте приложение под .NET Framework 4.6.1Добавьте элемент config / startup / supportRuntime в app.config с помощью version = "v4.0" sku = ". NETFramework, Version = v4.6.1"Вариант 1 нежелателен, поскольку потребует переиздания программного обеспечения.
Вариант 2 не делает то, что я ожидал. Кажется, он проверяет, установлен ли CLR 4.0 (не framework 4.0), и если нет, запрашивает загрузку соответствующего SKU для его установки. После установки приложение все еще выполняется под .NET Framework 4.0
В качестве теста и причины, по которой этот вопрос опубликован, я создал небольшое консольное приложение, которое просто делает это
Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol);
Если это скомпилировано с .NET Framework 4, то вывод
Ssl3, Tls
Если это скомпилировано с .NET Framework 4.6.1, то вывод
Tls, Tls11, Tls12