崩溃4
我们的应用程序使用基于.NET 3.5崩溃4
这是在Windows XP专门测试的WinForms建,虽然我不知道它是否操作系统有关。
每当我在仅使用.NET 4的机器上运行它时,它会崩溃,并说它无法找到版本为3.5的.NET程序集。
我想知道为什么这不会自动发生。例如,某些第三方库安装某种策略,即安装新版本时即使应用程序是针对较早版本编译的,也会使用该策略。
UPDATE:确切的错误信息是:
“无法找到一个版本的运行时运行该应用程序”。
我的问题是:
- 这是为什么不与.NET Framework一样吗?
- 解决方案是在配置文件中添加元素?其他解决方案?
如果您的计算机没有安装.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运行,则没有缺点。 –
在一般情况下,应该不是这样的:
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)阅读这些链接:
2)查看是否可以以最小的.Net 3.5 Winforms应用程序重现问题
3)切割/粘贴确切的错误消息,以及任何相关的代码(例如从您的独立应用程序)
4)失败其他所有,请考虑将<startup useLegacyV2RuntimeActivationPolicy="true" >
添加到您的CLR启动配置。我不推荐这个,只能作为暂时的解决办法:
@liortal - 除了向我们提供确切的错误信息和发布代码(如果可能),还请告诉我们操作系统在哪里失败。我假设“Windows 7”。预先感谢您... – paulsm4
添加了确切的错误消息。 –
我的印象也是你在答案中指定的内容,但是你的回答与这里的其他答案相矛盾(由Alois Kraus提供)。 –
.NET 4.0引入新的CLR。所以基本4.0有没有帮助运行3.5应用程序。 It has been already mentioned here
是的.Net 4.0有一个新的CLR。但是大多数运行.Net 4.0 *的环境应该是向后兼容的。有什么OP在这里丢失... – paulsm4
我很困惑.NET 4(或CLR 4)是否应该支持运行3.5或不(然后没有明确的配置)。 –
我认为3.5(.net 2)CLR和.net4 CLR并排运行,因此如果您想运行较旧的应用程序,则需要3.5运行时安装 –
当您安装.net 3.5和.net 4.0时是否工作? –
@EmmieGabrielleLewis是的,它的确如此。 –