允许使用.NET 2.0构建的C#应用​​程序在.NET 4.0 / 4.5上运行

我们有一个用.NET 2.0 Framework(VS2005)构建的C#DLL(我们称之为myapp.exe ),我们发现我们的应用程序不能在只安装了.NET 4.0或更高版本的机器上运行。 为了让我们的应用程序在.NET 4.0上运行,我通过以下文章向myapp.exe.config添加了以下几行: 安装.NET Framework V4.0和运行.NET 2.0 / 3.0 / 3.5 / 3.5Sp1应用程序

    

它正在发挥作用。

然后我看到这篇文章还提到了以下内容(特别是第二段):

现在,我知道您不能只使用3.5 Service Pack 1应用程序并在V4.0 CLR上运行它。 它需要V2.0 CLR或使用标记重新配置,以便使应用程序在V4.0 CLR上运行,并且弯曲可能是您不想做的事情。

我没有意识到的是,安装.NET 4.0不会安装2.0 / 3.0 / 3.5 / 3.5Sp1应用程序所需的位。 它只会安装V4.0 CLR和V4.0程序集,而不是另外安装相当于.NET Framework V3.5 Sp1的程序。 因此,您需要自己安装(例如).NET Framework V3.5 Sp1和.NET 4.0

根据我的测试,这意味着我可以在.NET 4.0上使用.NET 4.0框架(4.0程序集/库)运行我的2.0 C#应用程序,这与文章所说的相矛盾。

或者我在这里遗漏了什么? 如果有人能澄清这一点可能会有所帮助。 微软并没有真正说清楚这一点。

根据我的测试,这意味着我可以在.NET 4.0上使用.NET 4.0框架(4.0程序集/库)运行我的2.0 C#应用程序,这与文章所说的相矛盾。

可以使用.NET 4程序集在.NET 4上运行应用程序。 但是,运行时行为可能会略有变化,因为您不会使用与开发时相同的运行时和框架。 我怀疑这篇文章试图建议你不会通过安装4.0来获得完全相同的行为,但是,正如你所见,它应该可行。

这样做很可能,但如果这将是一个标准的部署选项,我建议你对应用程序进行彻底的测试。

我引述:

“.NET Framework 4向后兼容使用.NET Framework 1.1,2.0,3.0和3.5构建的应用程序。换句话说,使用以前版本的.NET Framework构建的应用程序和组件将在.NET Framework 4.“

摘自.NET Framework中的版本兼容性

你对App.config文件有正确的想法,但你真的限制自己的一行。
我可以建议更自由地使用supportedRuntime线吗?

例如:

                 

为什么supportedRuntime version="v3.5"注释掉了? 请记住,此配置可识别应用程序与哪些版本的公共语言运行时(CLR)兼容。 没有3.0或3.5版本的CLR。 请参阅.NET Framework版本和依赖项

只是为了更简洁一点。 在App.config中,您显示了对CLR的支持。 从.Net v2开始,只有2个版本的CLR 。 因此,以下内容将为您提供.Net v2及其支持。 确保包含使用项目构建的exe.config文件,否则您可能仍会看到要求安装.Net的弹出窗口。

        

要支持.Net v2到v3.5,请使用:

  

对于.Net v4.0到4.6的支持,请使用:

  

可以找到有关配置应用程序以支持.NET Framework的更多信息

来自: microsoft docs :

快照.net框架

您可以选择任何App.config文件设置。

只是将web.config设置为supportedRuntime version =“v4.0.30319”/是不够的。

您需要在Visual Studio中实际打开项目,将其目标框架(属性 – >构建)更改为4.0 – 然后将构建的解决方案重新部署到4.0客户端。 几个系统组件在2.0和4.0(system.web等)之间是不同的 – 尽管如前面的答案所示,已经提供了向后兼容性。

始终如一地为客户提供精确的“4.0兼容”版本的唯一方法是针对4.0运行时进行编译。 这将需要将任何第三方,开源库升级到他们的4.0版本。