在Visual Studio中设置“目标框架”有什么效果?

本文关键字:什么 目标框架 框架 Studio Visual 设置 目标 | 更新日期: 2023-09-27 18:35:14

在Visual Studio中,您可以为项目设置"目标框架"。

众所周知,如果将"目标框架"设置为(例如).NET 4.5.2,则在仅安装了 .NET 4.5.1 的计算机上,应用程序将无法运行。

第一个问题:真的是这样吗?第二个问题:该设置还有其他影响吗?

在我的公司中,我们目前正在将应用程序的最低要求设置为 .NET 4.5.2。因此,我们当然是设置"目标框架"。我们使用的内部库设置为.NET 4.5的"目标框架"。我们想知道这是否有所作为,或者库是否也应该设置为 .NET 4.5.2。

在我看来,这应该无关紧要,但我没有找到任何关于该主题的资源。你觉得怎么样?

在Visual Studio中设置“目标框架”有什么效果?

第一个问题:真的是这样吗?

这要看情况。如果您的应用程序面向 4.5.2,但不使用 4.5.2 中但未使用 4.5.1 中的任何内容,那么理论上它可以在仅安装 4.5.1 的计算机上正常运行。(可能会检查程序/安装程序运行以检查是否安装了 4.5.2,但您可以禁用此功能)

但是,如果您的应用程序使用 4.5.2 中但 4.5.1 中没有的函数(或其他函数),则您的应用程序将不会在 4.5.1 计算机上运行。

作为一般规则,应仅将目标设置为所需的最小值。 即,如果您不使用 4.5.2 特定函数,则不要将其定位为 4.5.2,因为没有必要。如果可以的话,最好将目标设置为 4.5.1,因为您可以在 4.5.2 和 4.5.1 计算机上正常运行。目标越低越好,因为它有可能在更多的机器上运行。

同样的规则也适用于所有其他框架,(即,如果你的Android应用程序只需要18级API,那么将目标(或至少最小目标)设置为18而不是更高。

这些框架被设计为向后兼容;如果你有一个用 .NET 2.0 编写的程序,你可以在 4.0 运行时中运行它,因为没有一个框架会删除以前版本具有的功能(这就是为什么我们仍然有像 ArrayList 这样的非泛型集合,即使它们被弃用以支持泛型集合)。但是,反之则不一定正确;4.0 应用不能保证在 2.0 中运行,因为它可能会利用以前版本中不可用的新运行时的新功能。在任何情况下,如果希望应用尝试在其未专门针对的运行时版本上运行,则必须使用 SupportedRuntime 元素在 app.config 中指定该版本。

第一个问题:

简短的回答 - 是的。

每当更新框架时,都无法保证可能进行了哪些添加或错误修复或更改,这与任何类型的软件更新都是相同的原则。我的意思的一个很好的例子可能是应用程序通过添加或删除一些来更改其配置设置,并在代码中使用这些设置。如果您随后尝试将更新的配置文件替换为以前的版本,应用程序会中断吗?这里也是同样的原理。如果尝试使用的应用程序需要比当前运行的 .NET Framework 更新的版本,则例如,应用程序可能没有依赖的某些功能。因此,.NET 应用程序将只查找其最低 .NET 版本,而不会查找低于该版本的内容。

第二个问题:

如果面向早期版本的框架(如 .NET 2.0),则不会获得 LINQ 等功能,但如果希望应用程序在几乎任何安装了 .NET 的计算机上运行,则这是最安全的选择。

希望这有帮助!