从MSDN 页面,关于 .NET Framework 版本,我们知道每个版本都包含以前版本的所有功能。
与先前版本的 .NET Framework 不同,如果未安装先前版本,.NET Framework 4 不允许使用先前版本的 .NET Framework 构建的应用程序向前迁移并在其上运行
这是为什么?
从MSDN 页面,关于 .NET Framework 版本,我们知道每个版本都包含以前版本的所有功能。
与先前版本的 .NET Framework 不同,如果未安装先前版本,.NET Framework 4 不允许使用先前版本的 .NET Framework 构建的应用程序向前迁移并在其上运行
这是为什么?
正如其他答案中已经解释的那样,它们是不同的运行时,因此默认情况下不支持该应用程序,因为未安装 .NET 3.5 使用的 2.0 运行时。
但是,您可以将以下内容添加到应用程序配置中以强制应用程序使用 .NET 4.0 运行时:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
然而,由于不同运行时之间的变化,这可能会导致应用程序崩溃,因此最安全的是使用应用程序所针对的运行时。
与先前版本的 .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,它会失败。