Wie erzwinge ich die Ausführung einer auf .NET Framework 4 kompilierten Anwendung unter .NET Framework 4.6.1?

Ich habe umfangreiche Nachforschungen angestellt und keine passende Antwort gefunden. Hier ist das Szenario.

Ich habe eine Anwendung, die für .NET Framework 4 kompiliert wurde. Zur Laufzeit soll diese Anwendung tatsächlich in .NET Framework 4.6.1 ausgeführt werden. Bisher habe ich zwei Optionen gefunden.

Kompilieren Sie die Anwendung unter .NET Framework 4.6.1 Fügen Sie das Element configuration / startup / supportedRuntime mit version = "v4.0" sku = "zu app.config hinzu. NETFramework, Version = v4.6.1"

Option 1 ist nicht wünschenswert, da eine erneute Veröffentlichung der Software erforderlich ist.

Option 2 macht nicht das, was ich erwarten würde. Anscheinend wird überprüft, ob CLR 4.0 (nicht Framework 4.0) installiert ist, und wenn dies nicht der Fall ist, werden Sie aufgefordert, die entsprechende SKU herunterzuladen, um sie zu installieren. Nach der Installation wird die Anwendung weiterhin unter .NET Framework 4.0 @ ausgeführ

Als Test habe ich eine kleine Konsolen-App erstellt, die diese Frage beantwortet.

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

Wenn das gegen .NET Framework 4 kompiliert wurde, ist die Ausgabe

Ssl3, Tls

Wenn das gegen .NET Framework 4.6.1 kompiliert wurde, ist die Ausgabe

Tls, Tls11, Tls12

Antworten auf die Frage(4)

Ihre Antwort auf die Frage