我进行了相当多的研究,但没有找到任何合适的答案。以下是情况描述。
我有一个应用程序,编译目标为.NET Framework 4。在运行时,我希望该应用程序实际上在.NET Framework 4.6.1中执行。到目前为止,我发现了两个选项。
- 重新编译应用程序以针对.NET Framework 4.6.1
- 在app.config中添加configuration/startup/supportedRuntime元素,其版本为"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