zoukankan      html  css  js  c++  java
  • [导入]Microsoft.Web.UI.WebControls的版本冲突问题

    Microsoft.Web.UI.WebControls的版本冲突问题,不记得什么时候从MS的网站上下载的这个控件组。它原来的版本是以私有程序集发布的(应该是的,只是我没太注意),所以我总是在把它的DLL文件Copy到网站BIN目录里进行使用,并且在IDE里也引用了这个DLL文件。

    前几天下载了新版本的Microsoft.Web.UI.WebControls控件。让我郁闷的是,安装完成后,测试都是正常的,而且程序一直都很好,结果今天测试的时候,全部出现错误,不是控件找不到程序集(我删除了进行测试)就是说控件类重复定义。显然是出现了版本冲突问题了。再就是说控件的类不是MS的什么什么类。搞的郁闷了一上午,最后不得不删除新安装的控件重新再试。

    最后发现,我安装的控件集是公有程序集,它在windows/assembly目录里有注册,而且删除不了。而我的IDE是引用的该程序集,而我的项目里引用的是原来的程序集,结果就出现了这样错误。后来只好删除旧的程序集,重新设计程序。郁闷死了。。。。。。。。。。早知道这样的结果,,,,,,,唉。。。。。。

    最后比较发现:Microsoft.Web.UI.WebControls.dll 原来的:version:1.0.2.226 Size:176 KB (180,224 bytes)

    新的:version:1.0.2.226 size:182 KB (186,688 bytes),TNND,更新后版本号都不改一下的,MS真是会做事。

    ===================================================================

    查了好半天,终于明白是怎么一回事了,如果把它说成MS的另一个小BUG,或者不算过分。
    产生这个版本冲突的主要原因是系统自动的给我多copy了一个文件到临时目录里。

    我们知道,asp.net程序在运行的时候,其实它关没有加载bin目录里的DLL文件,而在copy了一份文件到系统的临时目录里,然后IIS读取里面的数据执行。一般这个目录会在:
    C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files
    当然版本号不一样的进修会有所不同,你可以在IIS不工作的时候,删除里而的所有内容而不会有任何问题。

    然而,当我的asp.net程序运行的时候,IIS给我Copy了两个完全一样的DLL文件在不同的临时(在它下而的子目录里会有不同的编号来区别子目录)目录里。这样一来,只要我的程序一加载Microsoft.Web.UI.WebControls.dll 里面的资源就会出现错误。错误信息就是类资源重复定义。

    为什么它会Copy两份DLL到时候目录呢?主要是因为我的程序里分了几个项目,一个是专门处理ASPX页面的项目,另一个是主要负责一些数据库和业务逻辑的,而两个都要用到Microsoft.Web.UI.WebControls.dll ,所在两个项目里都引用了同一个文件。这个Microsoft.Web.UI.WebControls.dll 应该是可以自己识别的,因为它是用强程序集名,而且采用的公共程序集来部署的,应该不存在这样的问题。而且在编译时都没有问题。只是在运行的时候,IIS并没有公共程序集上引用这个DLL文件,而是COPY了一份到临时目录。这样做的原因是ASP.net程序并不知道服务器上是否安装了Microsoft.Web.UI.WebControls.dll,所以每引用一次就向临时目录里添加一次,而它又不去区别文件的程序集名(可能会有同名也可以运行的),也没管版本,结果就出现了这样的冲突问题。

    为了解决这一冲突,我唯一能做的就是用公共程序里定义的数据结构来传输数据,我本来想用TreeNode来传递数据的,结果只好改用DataTable来处理了,然后把运算逻辑再改到ASPX项目里,这真是一个BUG。


    文章来源:http://computer.mblogger.cn/wucountry/posts/49497.aspx
    ================================
      /\_/\                        
     (=^o^=)  Wu.Country@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    Oracle锁表与解锁 对象锁与解锁
    Unity3D开发之NGUI点击事件穿透响应处理
    Unity 3D 关于给APK包加广告的流程
    Unity 3D 粒子系统的一点经验
    Unity3D模型的细致纹理问题解决办法
    Unity 3D学习之 Prime31 Game Center插件用法
    Unity3D如何制作透贴和使用透贴模型
    NGUI的部分控件无法更改layer?
    关于Unity3D中Resources动态加载NGUI图片的方法
    关于NGUI的动态加载后的刷新显示问题,解决办法!!
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305638.html
Copyright © 2011-2022 走看看