在Visual Studio中,您可以设置"目标框架"为你的项目。
如果您设置"目标框架"或多或少是常识。 (例如).NET 4.5.2应用程序在安装了.NET 4.5.1的计算机上运行时不会运行。
第一个问题:这是真的吗? 第二个问题:该设置是否还有其他影响?
在我的公司,我们目前正在为.NET 4.5.2设置应用程序的最低要求。因此我们设置了"目标框架"当然。 我们正在使用的内部库设置为"目标框架" .NET 4.5。我们想知道这是否有所作为,或者库是否也应该设置为.NET 4.5.2。
在我看来,这应该没关系,但我没有找到关于该主题的任何资源。你觉得怎么样?
答案 0 :(得分:1)
第一个问题:这是真的吗?
这取决于。如果您的应用程序是针对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而不是更高。
答案 1 :(得分:0)
第一个问题:
简短回答 - 是的。
每当更新框架时,无法保证可能添加或修复了哪些错误或更改,这与任何类型的软件更新都是相同的原则。我的意思的一个很好的例子可能是一个应用程序通过添加或删除一些来改变它的配置设置,并在其代码中使用这些设置。如果您尝试将更新的配置文件替换为以前的版本,应用程序将会中断吗?这是同样的原则。如果您尝试使用需要比当前运行的.NET框架更新版本的应用程序,那么例如,某些功能可能不是您的应用程序所依赖的。因此,.NET应用程序只会查找它们的最低.NET版本,而不会低于它。
第二个问题:
如果您定位早期版本的框架(例如.NET 2.0),您将无法获得LINQ等功能,但如果您希望应用程序几乎可以在安装了.NET的任何计算机上运行,那么是你最安全的选择。
希望这有帮助!
答案 2 :(得分:0)
框架旨在向后兼容;如果你有一个用.NET 2.0编写的程序,你可以在4.0运行时运行它,因为没有一个框架会删除先前版本的功能(这就是为什么我们仍然有像ArrayList这样的非泛型集合,即使他们被弃用以支持通用集合。但是,相反的情况并不一定如此; 4.0 app不能保证在2.0中运行,因为它可以利用新运行时的新功能,这些功能在以前的版本中是不可用的。在任何情况下,如果您希望您的应用程序尝试在没有专门定位的运行时版本上运行,则必须使用SupportedRuntime元素在app.config中指定。