在 .NET 4 上运行 .NET 3.5 应用时崩溃

本文关键字:NET 应用 崩溃 运行 | 更新日期: 2023-09-27 18:34:30

我们的应用程序是使用 .NET 3.5 上的 WinForms 构建

这是专门在Windows XP上测试的,尽管我不确定它是否与操作系统相关。

每当我在仅使用 .NET 4 的计算机上运行它时,它都会崩溃,说它找不到版本 3.5 的 .NET 程序集。

我想知道为什么这不会自动发生。例如,一些第三方库会安装某种策略,当安装较新版本时,即使您的应用程序是针对旧版本编译的,也会使用它。

更新:确切的错误消息是:

"找不到运行此应用程序的运行时版本"。

我的问题是:

  1. 为什么这与.NET框架不同?
  2. 解决方案是在配置文件中添加元素?还有其他解决方案吗?

在 .NET 4 上运行 .NET 3.5 应用时崩溃

一般来说,情况不应该如此:

http://msdn.microsoft.com/en-us/library/ff602939.aspx

向后兼容性意味着为 特定版本的平台将在更高版本上运行 平台。.NET Framework 尝试最大化向后兼容性: 为一个版本的 .NET Framework 编写的源代码应该 在更高版本的 .NET Framework 和运行的二进制文件上进行编译 在 .NET Framework 的一个版本上,其行为应该相同 .NET Framework 的更高版本。

.NET Framework 4 向后兼容以下应用程序: 是使用 .NET Framework 版本 1.1、2.0、3.0 和 3.5 构建的。在 其他词,使用以前版本构建的应用程序和组件 的 .NET Framework 将在 .NET Framework 4 上运行。

建议:

1( 阅读以下链接:

  • http://msdn.microsoft.com/en-us/library/ff602939.aspx

  • http://msdn.microsoft.com/en-us/library/dd889541.aspx

  • http://msdn.microsoft.com/en-us/library/ee461502.aspx

2(看看你是否可以用最小的.Net 3.5 Winforms应用程序重现问题

3( 剪切/粘贴确切的错误消息和任何相关代码(例如,来自您的独立应用程序(

4( 如果所有其他方法都失败,请考虑将<startup useLegacyV2RuntimeActivationPolicy="true" >添加到 CLR 启动配置中。 我不建议将其作为临时解决方法:

  • http://msdn.microsoft.com/en-us/library/bbx34a2h.aspx

如果您的计算机未安装 .NET 3.5,则没有要为应用启动的 CLR。由于潜在的兼容性问题,NET 4.0 不会自动用于你的应用。首先测试你的应用是否使用 .NET 4.0 运行,然后将此部分添加到你的 app.config 中,以告知 CLR 更喜欢运行 .NET 4.0(如果存在(。

<configuration>
   <startup>
      <supportedRuntime version="v4.0.30319"/>
   </startup>
</configuration>

如果 .NET 4 未作为回退存在,则应用程序所针对的 CLR 版本将用作回退。如果全部失败,您将收到消息"找不到运行此应用程序的运行时版本"。

.

NET 4.0引入了新的CLR。所以基本上拥有 4.0 对运行 3.5 应用程序没有多大帮助。这里已经提到过