【www.bbyears.com--WPF】
本文以DevExpress7.x为例,其他版本雷同。相关下载参考DevExpress网站:http://www.devexpress.com/
一)安装DXperience控件
1) 如安装有DXperience卸载老的DXperience控件
关闭VS2005/VS2008 IDE,通过控制面板的添加/删除程序功能进行卸载老版本的DXperience控件
2) 下载需要的文件
对应版本的DXperience试用版,编译脚本和本地化包都需要到DevExpress官方网站进行下载
下面给出下载链接,直接点击下载即可:
DXperience试用版:点击进入下载页面
编译脚本:点击进入下载页面
2) 安装试用版
安装试用版是必须的,因为它包括源码包中所没有的演示代码、帮助文档和各种工具。
双击DXperience试用版安装包进行安装。
这里要注意:下载的试用版的版本号应该与源码版本对应
3) 解压源码文件
将源码压缩包的所有文件解压到试用版的安装目录的Sources子目录下
默认的安装目录为:C:Program FilesDeveloper Express .NET v7.x
所以源码包应解压到C:Program FilesDeveloper Express .NET v7.xSources目录
(x应替换相应的次版本号,以下不再重复说明)
解压完成后应看到Sources目录下多了十几个源码子目录
4) 解压编译脚本
将下载的编译脚本压缩包解压,然后进入对应版本的子目录,
将所有文件(不包括子目录PatchInternalVisibleTo)复制到DXperience安装目录的Sources子目录下
5) 使用编译脚本进行编译
先执行clear.bat删除全局缓存中试用版的程序集DLL,再执行buildall.cmd重新生成正式版的程序集DLL
编译时可能会显示一些黄色的警告(warning),不用担心,不会出现错误(error)的
注:DXperience 7.3可能要求安装
a) .NET Compact Frame 2.0 SP2 (点击进入下载页面)
否则对下面二个项目的编译将报错:
DevExpress.Data.Compact.csproj
DevExpress.Xpo.Compact.csproj
b) .NET Framework 3.5 (点击下载)
否则对下面一个项目的编译将报错:
DevExpress.Xpo.Linq.csproj
对于DXperience 7.3.5源码中的ASPxScheduler的目录路径和编译脚本都存在问题,点击下载修正过的源码和编译脚本
6) 重新生成工具箱选项卡
点击 开始菜单 -> 所有程序 -> Developer Express .NET v7.x -> Tools -> ToolboxCreator
以删除试用版的VS2005/VS2008工具箱选项卡,并重新生成正式版的VS2005/VS2008工具箱选项卡
7) 确认升级成功
到此控件已经升级完成,让我们确认一下
打开VS2005,新建一个Windows应用程序,然后按Ctrl+Alt+X显示工具箱,发现有四个新选项卡:
DX: WinScheduler.v7.x
DX: WinLib.v7.x,
DX: Win.v7.x
DX: General.v7.x
展开Developer Express: Win.v7.x选项卡,将GridControl拖到Form1上,然后对GridControl点右键,
在弹出的快捷菜单中,选择“About”,这时可以看到XtraGrid的版本号已经更新了,
Serial Number显示为--TRIAL VERSION--,虽然显示为试用版但其实已经是正式版了
真正的试用版只要把GridControl拖到Form上就会自动弹出关于对话框的
二)升级原有的应用程序
1) 关闭VS2005/VS2008,备份要升级的应用程序
比如说用WinRAR/7-Zip打个备份包
2) 通过DXperience提供的ProjectConverter进行升级
执行 开始 -> 所有程序 -> Developer Express .NET v7.x -> Tools -> ProjectConverter
在弹出的对话框中选择VS项目文件所在的路径并去掉创建备份文件的勾然后按Upgrade就行了
ProjectConverter会将项目中所有对老版本DXperience程序集的引用转换为新版本
3) 打开VS2005/VS2008,重新编译项目
a. 从DevExpress Windows Controls 3.x (VS2005)升级7.x
可能需要更改一些代码,有三个地方需要改:
GridView.ExportToExcel -> GridView.ExportToXls
GridView.OptionsView.ShowFilterPanel = false -> GridView.OptionsView.ShowFilterPanelMode = ShowFilterPanelMode.Never
GridView.OptionsView.ShowFilterPanel = true -> GridView.OptionsView.ShowFilterPanelMode = ShowFilterPanelMode.ShowAlways
GridView.OptionsBehavior.ShowEditorOnMouseUp = true -> GridView.OptionsBehavior.EditorShowMode = EditorShowMode.MouseUp
可以按Ctrl+H激活查找和替换对话框,对当前项目所有cs文件进行替换
直到项目可以顺利通过编译
代码没问题了,但是界面还需要改动
应用程序运行后发现界面变得不像样子了
控件和工具栏的背景色不对了,按钮上的图片变成了不透明的了
在解决方案资源管理器中打开Program.cs,在Main()函数的Application.Run(new Forms.FormMain());这行代码前输入下面的代码
设置DXperience控件的默认样式#region 设置DXperience控件的默认样式
UserLookAndFeel defaultLookAndFeel = UserLookAndFeel.Default;
defaultLookAndFeel.UseWindowsXPTheme = false;
defaultLookAndFeel.Style = LookAndFeelStyle.Office2003;
#endregion
这段代码的功能是统一设置DXperience控件的默认样式
在主画面类中加入下面三个静态方法,然后
在包括NavBarControl控件的画面FormLoad事件中调用NavBarItemTransparent()方法
在包括BarManager控件的画面FormLoad事件中调用BarItemTransparent()方法
位图透明#region 位图透明
public static void BitmpTransparent(Bitmap bitmap)
...{
if (bitmap == null)
return;
bitmap.MakeTransparent(Color.Fuchsia);
bitmap.MakeTransparent(Color.Black);
}
#endregion
NavBar图标透明#region NavBar图标透明
public static void NavBarItemTransparent(NavBarControl navbar)
...{
foreach (NavBarGroup group in navbar.Groups)
...{
FormMain.BitmpTransparent(group.SmallImage as Bitmap);
FormMain.BitmpTransparent(group.LargeImage as Bitmap);
foreach (NavBarItemLink itemLink in group.ItemLinks)
...{
FormMain.BitmpTransparent((itemLink.Item as NavBarItem).SmallImage as Bitmap);
}
}
}
#endregion
Bar图标透明#region Bar图标透明
public static void BarItemTransparent(BarManager bar)
...{
foreach (BarItem item in bar.Items)
...{
if (item.Glyph != null)
FormMain.BitmpTransparent(item.Glyph as Bitmap);
}
}
#endregion
b.从7.1/7.2升级到7.3
编译时可能出现资源文件(*.resx)控件版本错误,定位到出错的行,向上找到最近的PublicKeyToken=xxxxxxxxxxxxxxxx的地方
到源码目录Sources下找到PublicKeyToken.txt,这个文本文件是按前面步骤编译时自动生成的,记录了公钥标记。
而ProjectConverter进行转换时并不会自动替换这个公钥码。
选中出错资源文件的PublicKeyToken=xxxxxxxxxxxxxxxx,按Ctrl+H弹出替换对话框,在替换为文本框输入PublicKeyToken=,
然后将PublicKeyToken.txt中的公钥复制并粘贴到后面,查找范围改为:整个解决方案,执行全部替换
再重新生成解决方案就没问题了
4) 更改ClickOnce布署
最后,还需要对ClickOnce布署进行一些调整
点击 项目菜单 -> 属性... 启动项目属性画面,选择“发布”选项卡并点击“应用程序文件(i)...”按钮
在弹出画面中选中显示所有文件,将老的DXperience程序集DLL从中删除,并将新的DXperience程序集DLL的发布状态改为“包括”
点击“立即发布”按钮进行发布,从客户端更新后测试,顺利通过
如果你是采用的安装程序,也只要替代DXperience程序集DLL就行了