已安装Target.NET Framework版本与.NET Framework版本

时间:2020-11-05 01:41:25

标签: c# .net

我们有一个C#项目,在Visual Studio中,相应的“目标框架”当前设置为“ .NET Framework 4.5”。我们有第二个客户端库(用C ++编写),该客户端库调用此C#库来执行某些操作。对于某些新功能,我们要使用4.6.1+框架。但是我们不直接使用该C#项目。

所以请记住一些问题:

通常,如果我们将“目标框架”升级到.NET Framework 4.6.1,并且在运行我们的应用的计算机上,实际框架是4.6.1之前的版本(例如4.5)。会发生什么?应用启动时会抛出异常吗?

如果我们坚持使用.NET Framework 4.5作为目标版本,是否可以选择自动使用运行该应用程序的计算机上实际安装的最新版本?

谢谢。

2 个答案:

答案 0 :(得分:2)

在运行我们的应用程序的计算机上,实际框架为4.6.1之前的版本(例如4.5)。会发生什么?应用启动时会抛出异常吗?

应用程序启动时不会引发异常...它唯一可能引发异常的情况是如果以及何时)您的库调用了在.NET 4.6.1中存在,但在.NET 4.5中不存在...您将得到一个MissingMethodException,除了一切都可以正常工作。

您可以做的是检查在加载库的过程中正在运行的.NET Framework。

string version = AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName;

您可以在库中被调用的方法的开始处执行此操作。如果.NET Framework是<4.6.1,则可以决定要执行的操作...显示错误消息,或更改行为以使其不调用某些函数(并避免使用MissingMethodException)。

您还可以在计算机上进行determine which .NET Framework versions are installed并做一些决定。

答案 1 :(得分:1)

.NET Framework 4.5+向后兼容。如果app为4.6.1,但OS为4.5,则可能出现应用错误(无前向兼容性)。 Documentation about version compatibility说:

默认情况下,应用程序在其以前的.NET Framework版本上运行 专为。如果不存在该版本以及应用程序配置 文件未定义受支持的版本,.NET Framework 可能会发生初始化错误。在这种情况下,尝试运行 应用将会失败。