¿Cómo fuerzo que una aplicación compilada para .NET Framework 4 de destino se ejecute en .NET Framework 4.6.1?

He realizado una investigación considerable y no he encontrado ninguna respuesta adecuada. Aquí está el escenario.

Tengo una aplicación que se compiló para apuntar a .NET Framework 4. En tiempo de ejecución, quiero que esa aplicación se ejecute realmente dentro de .NET Framework 4.6.1. Encontré dos opciones hasta ahora.

Vuelva a compilar la aplicación en .NET Framework 4.6.1Agregue el elemento de configuración / inicio / supportRuntime a app.config con version = "v4.0" sku = ". NETFramework, Version = v4.6.1"

La opción 1 no es deseable ya que requeriría una nueva versión del software.

La opción 2 no hace lo que esperaría. Parece comprobar si está instalado CLR 4.0 (no framework 4.0) y, de lo contrario, se le solicita que descargue el SKU apropiado para instalarlo. Después de ser instalada, la aplicación aún se ejecuta bajo .NET Framework 4.0

Como prueba, y la razón por la cual se publica esta pregunta, creé una pequeña aplicación de consola que simplemente hace esto

Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol);

Si se compila contra .NET Framework 4, entonces el resultado es

Ssl3, Tls

Si se compila contra .NET Framework 4.6.1, entonces la salida es

Tls, Tls11, Tls12

Respuestas a la pregunta(2)

Su respuesta a la pregunta