原始地址: http://blog.csdn.net/giselite/article/details/7944600
Devexpress使用强名称编译生成强名称程序集来确保其程序集不被篡改,强名称程序集使用程序名称、版本号、语言和公钥标识做标记,强名称程序集只能加载强名称程序集,加载过程中如果以上四者中的任意一项对不上,就会加载失败。关于更详细的强名称程序集的知识,请参考:http://blog.csdn.net/nic7968/article/details/5979972
小知识:
对于.net程序是否加载成功以及加载了哪些位置的dll,可以使用.net sdk工具FUSLOGVW.exe来查看,使用方法是先打开FUSLOGVW.exe,然后启动.net程序,之后点击FUSLOGVW.exe界面上的刷新即可看到程序加载信息。FUSLOGVW.exe位于"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin"目录下。
通常使程序支持多国语言,是通过更改窗体的Localization属性,然后依次将Language属性设置为要支持的语言,并修改相应的菜单、图片等资源。这样,如果设置了支持“中文(中华人名共和国)”就会在编译输出目录下生成一个zh-CN的目录,该目录下放置了所有中文资源的编译结果。因此对于DXperience程序集的汉化,方式也是一样的,只需要将DXperience相应的语言程序集拷贝到你的程序集(exe文件所在目录)目录下即可。
网上下载到的dxKB_A421_DXperience_vxx.x_(xxxx-xx-xx).zip包中是DXperience支持多语言的附属程序源码,其中的DevExpress.DLL目录下是已经编译好的资源文件,因此 要汉化自己的Dev程序,除了设置自己程序的多语言属性外就是在发行时将DevExpress.DLL目录下相应的语言文件夹拷贝到自己的程序集中去。当然如果要想DevExpress在开发时也能够被汉化,那么最简单的办法就是将DevExpress.DLL中的中文语言包安装到Windows的强名称程序集缓存目录下(注意,拷贝到Dev的安装目录下是没有用的),该目录为C:\WINDOWS\assembly,直接拷贝是拷贝不进去,要使用gacutil.exe命令才能安装。gacutil.exe也是.net sdk的工具,位于"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin"目录下,使用命令格式形如:gacutil -i DevExpress.Data.v12.1.resources.dll。 对于解压得到的DevExpress.DLL目录,里面已经有一个批处理文件gacinstall.cmd,好心人已经写好了安装命令,只需要启动dos,使用gacinstall zh-CN即可将中文汉化程序集安装到Windows的强名称程序集缓存目录下了。
对于Dev论坛里的"The collection of localized DevExpress assemblies",以及"How to: Localize DevExpress WinForms Controls Using Satellite Assemblies",两篇,说了很多,但是没有告诉读者关键点,那就是执行一下gacinstall zh-CN即可。很简单的事,但是因为介绍的太多了,反而引起误导,比如看到介绍Dev安装目录Sources\DevExpress.Key下关于使用sn -k StrongKey.snk生成强密钥文件,然后编译资源文件的说明,很多人可能都像我一样很兴奋的立即去编译了,但是实际上编译了1下午等你编译完时,你才发现你编译的这些资源文件都会加载失败,原因就在于人家dev使用的是强名称程序集,你自己使用自己的密钥文件编译了资源,该编译结果只能用于使用相同的密钥文件编译的dev控件集。因为在"The collection of localized DevExpress assemblies"里有一句话,"Satellite assemblies must be signed with the same strong key token as the main DevExpress.~ assemblies. We don't distribute our key file - it's our signature. Therefore, you will also need to rebuild the main DevExpress.~ assemblies as well if you want to compile resource files yourself. ",相信很多人都会像我一样,没有看清人家实际上表达的意思是“如果你使用自己的密钥文件编译附属程序集,你还得使用该密钥文件编译dev程序集”,误导之处就在于它没有明确告诉你这个是在你有人家dev的源代码的情况下才能这样做的。
当然如果拥有了Dev的源代码,那么下面的用于编译附属资源文件的步骤就可以用上了:
1.在DXperience的安装目录下,找到Sources目录,在DevExpress.Key下有一个说明,告诉你如何生成密钥文件,按照说明,使用Visual studio的sdk工具,生成密钥文件,命令为:sn -k StrongKey.snk
2.解压附属程序集源代码,一般v12.1.x可以用于任何v12.1版本,如果是其他版本,到网上查找相应的资源代码。加压后,在其中新建一个名为DevExpress.Key目录,把第一步生成的StrongKey.snk文件拷贝到这个目录下。
3.打开Localization.sln工程,编译,所有的附属程序集会被重新编译,编译结果都在DevExpress.DLL目录下。
参考网站:
http://documentation.devexpress.com/#WindowsForms/CustomDocument5755
http://www.devexpress.com/Support/Center/KB/p/A421.aspx
以下信息来源于"DXperience 12.1.6 Universal 官方下载+帮助+注册插件+语言包+更新内容",网址:http://download.csdn.net/detail/htp111111sinacom/4509928
安装包
DXperience Installer (204 Mb)
http://downloads.devexpress.com/5b3f543d-2a63-4ab6-95ee-2cf2935d58ad/0.0.0.0/DXperience/2012.1/6/DXperience-12.1.6.exe
帮助文档
.NET Documentation Installer (563 Mb)
for VS2010
http://downloads.devexpress.com/91f3fb0f-0ad3-42d0-a19c-c0392e27f0fe/0.0.0.0/DXperience/2012.1/Help/DXperienceHelp2010-12.1.6.exe
.NET Documentation Installer (472 Mb) for VS2008
http://downloads.devexpress.com/7944658e-45c8-4e1a-9ac7-e60bb574718e/0.0.0.0/DXperience/2012.1/Help/DXperienceHelp2008-12.1.6.exe
破解插件
http://kuai.xunlei.com/d/BDJLGJWDUERW
语言包
http://www.devexpress.com/Support/Center/KB/p/A421.aspx
http://www.devexpress.com/Support/Center/p/K18427.aspx
http://www.devexpress.com/Support/Center/p/K421.aspx