代码之家  ›  专栏  ›  技术社区  ›  AndyMcKenna

混合使用.NET 2.0和3.5的DNN模块

  •  1
  • AndyMcKenna  · 技术社区  · 15 年前

    我正在运行一个DNN4.9.x站点,其中包含许多我们编写的自定义模块。它们都使用.NET 2.0,直到我将其中一个升级为使用3.5。

    现在我在2.0模块上得到这个错误

    错误CS0433:类型 “System.Web.UI.UpdatePanel”存在于 二者都 'C:\windows\assembly\gac_u msil\system.web.extensions\3.5.0.0_uuu31bf3856ad364e35\system.web.extensions.dll' 和 'C:\windows\microsoft.net\framework\v2.0.50727\临时 ASP.NET 文件\root\5badfcee\f17ac744\assembly\dl3\69975b21\004187ac_515cc701\system.web.extensions.dll'

    除了将所有其他模块升级为使用3.5,我还能做什么?

    更新:只需将其余模块升级到3.5就更容易了。

    如果删除system.web.extensions.dll的2.0版本,我会得到:

    无法加载文件或程序集 'system.web.extensions,' 版本=1.0.61025.0,文化=中性, publicKeyToken=31BF3856AD364E35'或 它的一个依赖项。系统 找不到指定的文件。

    我的前缀扩展名是:

    <%@ Register Assembly="System.Web.Extensions" Namespace="System.Web.UI" TagPrefix="ajx" %>
    

    因此,除了对项目的引用之外,没有任何内容指定2.0版本。我对引用的理解是,您只需要引用程序集的最低版本,它将与未来的版本一起工作,除非有重大更改。

    解决了的 我需要将此添加到我的web.config

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   braindice    15 年前

    听起来似乎安装的MS Ajax版本存在问题。多个版本应该能够并排存在(我认为)。无法告诉您确切的修复程序,但可能能够摆脱2.x版本的dll,然后它应该使用3x版本。