开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 2431|回复: 3

Devexpress 17.2.4 WPF源码编码

[复制链接]

0

精华

575

贡献

1058

赞扬

帖子
133
软币
5154
在线时间
809 小时
注册时间
2015-5-4
发表于 2018-7-7 19:31:46 | 显示全部楼层 |阅读模式
本帖最后由 wuyang26 于 2018-7-17 19:45 编辑

1>部分编译好了的WPF源码项目(含DevExpress.Xpf.RichEdit),可直接点击编译里面的任何项目:
链接:https://pan.baidu.com/s/1YXk3R56XxadP1hB450HzTw 密码:gjis
2>感谢网友的共享(含所有的源码):http://www.dxper.net/thread-41194-1-3.html

3>编译方法
   A、新建空解决方案
   B、逐个添加项目,修改项目的输出路径至统一的目录
   C、取消项目的"Sign the assembly"
   D、将每个项目中的参考引用由指向Dll修改为指向项目(这条可以不操作,但修改后,编译项目会更加方便,否则由于缺失编译的依赖性规则,你不知道哪个该先编译,哪个该后编译)
   E、修改AssemblyInfo.cs
        屏蔽如下代码:
//#pragma warning disable 1699
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile(@"..\..\..\Devexpress.Key\StrongKey.snk")]
//[assembly: AssemblyKeyName("")]
//#pragma warning restore 1699
将所有InternalsVisibleTo的后面的复杂键值删除,修改后类似如下:
[assembly: InternalsVisibleTo(AssemblyInfo.SRAssemblyReports)]
[assembly: InternalsVisibleTo(AssemblyInfo.SRAssemblyReportsExtensions)]
[assembly: InternalsVisibleTo(AssemblyInfo.SRAssemblyPrinting)]

    Xpf的库一般为WPF库,Xtra打头的库一般为Winform库,但Xtra中带Core的也会被WPF库所引用,为共享库,
如果不编译设计时支持,一般不会引用到非共享的Xtra库。

    基于上面的A至E流程,可以很容易的编译出WPF的DLL,我在VS2017上,不需要安装任何插件,不需要任何额外的Dll,几乎全部编译通过,然后测试了一下RichEdit,
拖放到窗口上,立即显示默认蓝的RichEdit控件,没有任何报警,运行也没问题,应该是经过上面的第C步就把强制认证给取消了。
   
     如果要设计时支持,应该编译带Design的项目,我是按如下方式编译的,编译Design项目,确实碰到了一点问题,主要是一些老旧的DLL找不到,下面是我编译的过程:
如果需要编译设计时支持Dll,则可能会引用到一系列Xtra库,这些设计时支持的DLL只是帮助VS IDE更好的进行界面设计,不是程序运行必须的Dll,另外为了编译设计时支持,需要查找和引用
微软的几个老的Dll(新的Dll还不受支持):Microsoft.VisualStudio.Shell.Design.dll/Microsoft.VisualStudio.Shell.dll
                                                                Microsoft.Windows.Design.Extensibility/Microsoft.Windows.Design.Interaction
由于找不到低版本的Microsoft.VisualStudio.Shell.Design.dll,最后把设计时的项目都升级到了.NET4.5
升级后的问题:
对于项目DevExpress.Xpf.Core.Design.Wizards的编译,需要搜索并添加:Microsoft.VisualStudio.TextTemplating.10.0.dll
另外对于项目DevExpress.Xpf.Core.Design,以及其他的一些项目的类似位置
查找替换Platform::DevExpress为DevExpress(注意:Platform::后面紧跟着的是System打头的名称空间就不用替换了),
这可能是没有给引用的项目起一个别名,通过查看原程序给项目的引用起一个别名就能解决问题(可参照未修改的源程序集的别名是如何命名的)



     按上面方式,我把Design项目也编译了,但是在测试控件的设计时,感觉有Design编译的DLL和没有Design的DLL没任何差别,难道Devexpress就没有搞些WPF控件的设计时的交互操作?
还是这个Design的编译有点问题,想安装一下Devexpress控件测试对比一下,但想到这玩意把C盘搞掉四五个G的空间,就后怕,我记得支持VisualStudio设计时的项目应该是
项目名.VisualStudio.Design,而源代码中只有 项目名.Design,没有任何针对VisualStudio的设计时。
    另外建议大家不要再搞Winform了,在Win10下,2K/3k/4K的屏幕,DPI只要大于100%,你去对比一下Winform和WPF,那Winform的字体都发虚的看着让人眼睛发花,而WPF的字体直接就
如同系统字体那般清晰。
    最近把Devexpress和Telerik的WPF控件都编译了一把,对于像RichEdit/Excel等大型控件,Devexpress的功能更强大些,但Devexpress的控件实在是太大了,估计都是Telerik控件的2倍甚至于
三四倍的尺寸,估计运行速度是赶不上Telerik的,Telerik的项目DLL分配和名称空间是借鉴微软的.NET DLL的,看似DLL有点分散,但使用后感觉更合理一些,尤其是它提供了很多小巧但有强大的控件,而Devexpress感觉是高度集成,随便添加几个控件就是一二十兆,看看Telerik的库,譬如一个保存各种UI状态的功能,Telerik就把它弄成了一个独立的DLL,尺寸也就几十K,感觉他们就是你要用到就引用,不用到就不会占用空间。

    特别修改:因为取消了PublicKeyTokenString,对于DevExpress.Data项目中的AssemblyHelper.cs需要做如下修改:
public static string GetFullNameAppendix() {
            //return ", Version=" + AssemblyInfo.Version + ", Culture=neutral, " + PublicKeyTokenString + "=" + GetCoreAssemblyPublicKeyToken();
            return ", Version=" + AssemblyInfo.Version + ", Culture=neutral";

        }
      
当然经过各种尝试,后来又编译了带强名称的项目,然后又尝试了将所有项目升级到.NET4.5

评分

参与人数 1赞扬 +1 收起 理由
392397052 + 1 很给力

查看全部评分

回复

使用道具 举报

0

精华

575

贡献

1058

赞扬

帖子
133
软币
5154
在线时间
809 小时
注册时间
2015-5-4
 楼主| 发表于 2018-7-8 15:38:29 | 显示全部楼层
本帖最后由 wuyang26 于 2018-7-8 21:36 编辑

将DevExpress.Data项目中的AssemblyHelper.cs按上述修改后(注意此项目需要重新编译),右键弹出菜单有些自定义的东西了,好像
设计时起作用了,当然没有生成Licenses.licx,我想正式运行时应该不会有什么问题
回复

使用道具 举报

0

精华

575

贡献

1058

赞扬

帖子
133
软币
5154
在线时间
809 小时
注册时间
2015-5-4
 楼主| 发表于 2018-7-8 22:01:24 | 显示全部楼层
本帖最后由 wuyang26 于 2018-7-8 22:02 编辑

刚才把Excel编译成功了,但奇怪的是都17.2.4了,为何Devexpress的spreadsheet表的行头和列头文字为何还
不能自适应DPI,在2K屏幕下,行头和列头文字明显缩小了,跟踪查看内部的字体尺寸为12,也不小啊,是不是因为Winform库的共享库造成的?还是其他原因,以前在WPF下,文字那是绝对自适应DPI的,只是那个位图光标才会有点问题,而Devexpress的spreadsheet控件两者都有问题。
    然后我强制把字体尺寸改到了16,重编译,列头文字变大了一点,但仍旧没有达到理想的那么大
回复

使用道具 举报

0

精华

156

贡献

38

赞扬

帖子
29
软币
436
在线时间
28 小时
注册时间
2015-12-9
发表于 2018-7-17 17:32:43 | 显示全部楼层
厉害了,这才是高手嘛
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-3-29 17:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表