在 .NET 4 上运行 .NET 3.5 应用时崩溃
本文关键字:NET 应用 崩溃 运行 | 更新日期: 2023-09-27 18:34:30
我们的应用程序是使用 .NET 3.5 上的 WinForms 构建
的这是专门在Windows XP上测试的,尽管我不确定它是否与操作系统相关。
每当我在仅使用 .NET 4 的计算机上运行它时,它都会崩溃,说它找不到版本 3.5 的 .NET 程序集。
我想知道为什么这不会自动发生。例如,一些第三方库会安装某种策略,当安装较新版本时,即使您的应用程序是针对旧版本编译的,也会使用它。
更新:确切的错误消息是:
"找不到运行此应用程序的运行时版本"。
我的问题是:
- 为什么这与.NET框架不同?
- 解决方案是在配置文件中添加元素?还有其他解决方案吗?
一般来说,情况不应该如此:
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 应用程序没有多大帮助。这里已经提到过