- 积分
- 1085
- 在线时间
- 812 小时
- 主题
- 16
- 注册时间
- 2015-5-4
- 帖子
- 135
- 最后登录
- 2024-9-19
- 帖子
- 135
- 软币
- 5206
- 在线时间
- 812 小时
- 注册时间
- 2015-5-4
|
本帖最后由 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
|
评分
-
查看全部评分
|