公司的产品开发使用的是DevExpress的WinForms Collection控件集。当时使用的是2.x版本。现在看到3.x超强的功能,实在是馋人。所以希望能够从2.x升级到3.x。

    但是,公司比较担心升级后会带来版本不兼容的问题,比如,在2.x发布的接口或属性在里3.0里发生了改动。于是我作了如下尝试,据我现在所知道的数据,我觉得从2.x升级到3.x是没有问题的。

    为了方便,先定义一些变量:
            DevExpress2.x版本的TextEdit控件:
                TextEdit1
                TextEdit2
            
            DevExpress3.x版本的TextEdit控件:
                TextEdit3
                TextEdit4

    首先,我想知道,DevExpress 2.x和3.x是否能够同时使用。于是,我在Form1中放置了TextEdit1和TextEdit3,然后,编译、运行。结果成功。但是出现了一个奇怪的问题,那就是:如果在Form1中先拖入TextEdit1(在项目的引用中添加DevExpress.XtraEditor),那么之后拖入的3.x的TextEdit控件都会被认为是2.x版本的TextEdit控件;反过来,如果先拖入TextEdit3(在项目的引用中添加DevExpress.XtraEditor3),那么之后拖入的2.x版本的TextEdit控件都会被认为是3.x版本的TextEdit控件。

    我开始怀疑是VS2003将两个版本的dll给弄混了,因此我又作了如下:
    
    1、我想模仿控件升级的场景,新建Form2,添加2.x版本的TextEdit控件TextEdit1(项目的引用中同时加入了DevExpress.XtraEditor)。
    2、然后,添加3.x版本的TextEdit控件TextEdit3(项目的引用中添加了DevExpress.XtraEditor3)。这时,TextEdit3仍然被作为2.x的TextEdit控件被处理。
    3、编译运行,没有问题。
    4、将项目引用中对2.x版本DevExpress.XtraEditor和DevExpress.Utils项删除,只保留DevExpress.XtraEditor3、DevExpress.Data3和DevExpress.Util3项。
    5、再添加3.x版本的TextEdit控件TextEdit4,我惊奇的发现,此时添加的TextEdit4居然被正确的识别为3.x版本的控件。可是,刚才添加的TextEdit3却仍然被识别为2.x版本的控件。
    6、编译运行,没有问题,TextEdit1和TextEdit3都被编译为2.x的控件,而TextEdit4为3.x的控件。注意,这时,项目的引用中已经不再有对2.x版本dll的引用了,可是2.x版本的TextEdit控件编译运行仍然没有问题,而且行为还是2.x版本的行为。这不正是我们所希望的吗?低版本的控件还是低版本的控件,高版本的控件还是高版本的控件,互不影响。
   
    我觉得其中的规则是:控件按照它拖入时的版本进行编译,高版本控件向下兼容低版本的控件。为了证明这个观点,我将上面的做法反过来,先添加3.x版本的TextEdit3,再添加2.x版本的TextEdit1,删除对3.x版本dll的引用,再添加2.x版本的TextEdit2,运行编译。结果,编译失败,报没有mask属性;这是由于删除了对3.x版本dll的引用,但是在视图设计界面TextEdit3仍然为3.x版本的控件,而TextEdit1和TextEdit2为2.x版本的控件。看来高版本向下兼容低版本。
    
    我后来有将内部的一个项目用DevExpress提供的XtraConverter工具进行了一下转换,速度非常快,不像是修改代码的样子。打开项目的引用,发现有的使用DevExpress控件的项目原先对DevExpress.Editor dll的引用被修改为DevExpress.Editor3,不过,奇怪的是有的使用了DevExpress的控件,却没有修改引用。但是编译成功。虽然运行时失败,不过不是因为DevExpress控件升级。

    好了,综上,我觉得DevExpress WinForms控件集完全能够很好的从低版本升级到高版本,而不必修改原来的程序。当然,这样下结论比较毛躁,希望各位网友提供线索。
   
Posted on 2005-11-14 17:30 雨田美文 阅读(1326) 评论(8) 编辑 收藏

Feedback

#1楼  回复 引用 查看   

2005-11-14 18:09 by 高海东      
这个控件很强大吗
在那里可以下载

#2楼[楼主]  回复 引用 查看   

2005-11-14 18:19 by 雨田美文      
非常强大 到http://www.dnc.com.cn/ 去下载吧

#3楼  回复 引用   

2005-11-14 19:31 by LukeWang[未注册用户]
哪里来的 DevExpress Winform Collection 3.X 你写的么?
人家最新的也只有2.06啊

#4楼  回复 引用   

2005-11-14 20:30 by faqi[未注册用户]
很好的一个东西,感觉做winform数据库程序,有这么一套也就差不多够了。

#5楼  回复 引用   

2005-11-14 20:39 by LukeWang[未注册用户]
你从哪里下载的 3.X ?
网上我能找到最新的也就是 2.0.6了,不过DevExpress网站说最新的是3.X了
你有3.X 拿出来大家共享啊

#6楼  回复 引用   

2005-11-14 21:13 by ly4cn
公司开发,当然是从devExpress购买的啦。不要眼红啦。

#7楼  回复 引用   

2005-11-14 21:22 by faqi[未注册用户]
DevExpress WinForms Collection 2.06是一个组合包,里面所包含的组件是3.X版本的。www.playicq.com上有下载

#8楼  回复 引用   

2005-11-15 12:36 by haopoo[未注册用户]
现在已经哟2.1的了,而且可用在net 2.0中