zoukankan      html  css  js  c++  java
  • .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

    参考官网: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

    龙腾一族至尊龙骑
  • 相关阅读:
    29-赫夫曼树
    28-线索化二叉树
    27-顺序存储二叉树
    26-二叉树的遍历查找和删除
    25-二叉树的概念
    24-逻辑结构分析
    23-哈希表
    22-查找算法
    21-堆排序
    Mui-列表/table-view
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/13371815.html
Copyright © 2011-2022 走看看