0
点赞
收藏
分享

微信扫一扫

.NET2.0程序集无法在.net 4.0 中运行的解决方案

首先在MSDN上看到 4.0 的更新日志中有如下这条:

.NET Framework 4 不能自动使用自己的公共语言运行时版本来运行由 .NET Framework 早期版本生成的应用程序。 若要使用 .NET Framework 4 运行较早的应用程序,则必须使用 Visual Studio 中项目的属性指定的目标 .NET Framework 版本编译应用程序, 或使用应用程序配置文件中的 <supportedRuntime> 元素 可指定所支持的运行时。

 解决方案就是在app.config中添加一个配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0" />
</startup>
</configuration>

官网解释:​​https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/version-compatibility?redirectedfrom=MSDN​​

应用的版本兼容性

默认情况下,应用将在其目标 .NET Framework 版本上运行。 如果该版本不存在且应用配置文件未定义支持的版本,则可能出现 .NET Framework 初始化错误。 在此情况下,尝试运行应用程序将失败。

若要定义运行应用的特定版本,请将一个或多个 ​​<supportedRuntime>​​​ 元素添加到应用的配置文件中。 每个 ​​<supportedRuntime>​​ 元素都列出了支持的运行时版本,第一个元素指定了优先级最高的版本,最后一个元素指定了优先级最低的版本。

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

 

有关详细信息,请参阅​​如何:将应用配置为支持 .NET Framework 4 或 4.x​​。

具体步骤如下:

1、在.net2.0程序项目下添加应用程序配置文件 App.config 或者app.config,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0" />
</startup>
</configuration>

 

2、重新生成程序

在原来.NET2.0,.NET3.5的时候,由于程序运行环境本质还是.NET2.0,而到了.NET4.0由于整个程序集的版本更新,以前使用.NET2.0所编写的程序集与.NET4.0的程序集继续拧互操作的时候就会出现上面所说的兼容性问题。

通过MSDN,我们可以知道,startup配置节中的useLegacyV2RuntimeActivationPolicy属性是在.NET4.0中新增的,默认是false,表示:使用默认的 .NET Framework 4 激活策略,该激活策略将加载 .NET Framework 4 通过使用公共语言运行时 (CLR) 版本 4 所创建的程序集,以及 CLR 早期版本通过使用受支持的低于版本 4 的最高 CLR 版本所创建的程序集。

现在如果当程序在.NET4.0环境下要使用.NET2.0及.NET3.5的程序时就必须将useLegacyV2RuntimeActivationPolicy设置为true,同时还要注意,需要在startup配置节的字节中添加supportedRuntime配置节,并指定为"v4.0",表示使用.NET4.0运行时来运行程序。

 

注意:

useLegacyV2RuntimeActivationPolicy 特性

官网解释:​​https://docs.microsoft.com/zh-cn/dotnet/framework/configure-apps/file-schema/startup/startup-element?redirectedfrom=MSDN​​

.NET2.0程序集无法在.net 4.0 中运行的解决方案_程序集

 

 

参考官网:​​https://docs.microsoft.com/zh-cn/dotnet/framework/configure-apps/file-schema/startup/startup-element?redirectedfrom=MSDN​​

参考官网:​​https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/version-compatibility?redirectedfrom=MSDN​​

 

龙腾一族至尊龙骑

举报

相关推荐

0 条评论