为什么只安装.NET 4时为.NET 3.5编译的应用程序不起作用?

时间:2012-07-13 16:59:38

标签: .net .net-4.0 .net-3.5 .net-framework-version

MSDN page开始,关于.NET Framework版本,我们知道每个版本都包含以前版本的所有功能。

与以前版本的.NET Framework不同,如果未安装以前版本,.NET Framework 4不允许使用以前版本的.NET Framework构建的应用程序向前迁移并在其上运行

为什么?

4 个答案:

答案 0 :(得分:7)

正如在其他答案中已经解释的那样,它们是不同的运行时,因此默认情况下不支持应用程序,因为未安装.NET 3.5使用的2.0运行时。

但是,您可以将以下内容添加到应用程序配置中以强制应用程序使用.NET 4.0运行时:

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

然而,由于不同运行时之间的更改,这可能会导致应用程序崩溃,因此最安全的是使用应用程序所针对的运行时。

答案 1 :(得分:3)

默认情况下,它们需要不同的运行时。

3.5应用程序的运行时是2.0运行时,它与4.0运行时不兼容。

你可以像JoãoAngelo在his answer中解释的那样重新定位。

答案 2 :(得分:3)

  

与以前版本的.NET Framework不同,如果未安装以前版本,.NET Framework 4不允许使用以前版本的.NET Framework构建的应用程序向前迁移并在其上运行

他们这样做,但您必须明确允许它使用.NET 4运行时运行。由于框架具有新的运行时,如果您的应用程序使用旧版本,则必须选择允许此操作。

您可以通过让您的应用配置指定正确的supportedRuntime变量来实现此目的,即:

<configuration>
   <startup>
      <supportedRuntime version="v4.0"/>
      <supportedRuntime version="v2.0.50727"/>
   </startup>
</configuration>

如果没有这个,运行时会:

  

如果应用程序配置文件中不存在该元素,则使用用于构建应用程序的运行时版本。

由于使用CLR 2构建,因此只允许使用2.0运行时,因此如果用户没有.NET 3.5sp1,则会失败。

答案 3 :(得分:1)

  • .NET 2.0
  • .NET 3.x基于.NET 2.0,因此两者都需要安装.NET 2.0
  • .NET 4.0使用自己的.NET运行时版本,因此您可以单独安装它
  • .NET 4.5 updates 4.0的运行时