一:前言html
一、DevExpress是 Developer Express的缩写,DevExpress是一家全球知名的控件开发公司。DevExpress 也特指此公司出品的控件集合或某系列控件或其中某控件。express
Dev 15.1版本17年更新到15.1.13后就没更新了,直到19年又更新到15.1.14了,能够说是挺照顾老用户的。应该是对这期间用户回馈的BUG进行修复了。以前项目从14.1升级到15.1,还算顺利。windows
二、本文章主要是对重编译DevExpress源码的一个梳理,让想编译的小伙伴能够有个借鉴。至于为什么要编译呢,由于编译后的DLL默认就去除了官方受权注册的机制了,至关于安装到别的电脑时无需再受权,部署软件就省事多了)网络
二:准备less
须要下载帖子里面提到的Dev的编译工具:http://downloads.devexpress.com/DXperience/SourceCodeBuilderTool/SourceBuilderTool105.zip(2019-03-01当前最新,你们能够更改路径名下载旧版本,如105改成104)工具
PS:这个工具备个问题,会提示网络不可用,我用ILSpy 4.0用C# 5.0格式反编译后,用VS2013打开,发现里面提示网络不可用是访问了谷歌的网站,改为baidu.com便可。另外那个.NET Framework 4.5的提示其实是不对的,明明系统已经经过更新补丁安装到4.5.2版本了。你只要确保程序和功能里面已经安装了便可)网站
cd /d %~dp0 set gacutil="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" %gacutil% -i Microsoft.Data.Edm.dll %gacutil% -i Microsoft.Data.OData.dll %gacutil% -i Microsoft.Data.Services.Client.dll %gacutil% -i Microsoft.Data.Services.dll %gacutil% -i Microsoft.SharePoint.dll %gacutil% -i Microsoft.SharePoint.Publishing.dll %gacutil% -i Microsoft.Web.CommandUI.dll %gacutil% -i dotless.Core.dll %gacutil% -i ICSharpCode.SharpZipLib.dll %gacutil% -i System.Spatial.dll pause
三:重编译 DevExpress 程序集ui
一、点击编译,等待进度条走完。code
二、错误处理:orm
目前安装我上述环境编译完有一个失败
SourceBuilderTool.exe编译后同目录下会生成build_errors.log文件,下面列一下部分错误的解决方法:
以上四个项目是缺乏ASP.NET MVC 3 RTM组件致使,安装后便可解决。(DevExpress官方真是坑爹)
Microsoft Windows [版本 6.1.7601]
版权全部 (c) 2009 Microsoft Corporation。保留全部权利。
C:\Program Files\DevExpress 15.1\Components\Sources>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" /nologo /t:Rebuild /verbosity:quiet /p:Configuration=Release;Platform=AnyCPU;OutputPath=..\..\..\Bin\WinRT\ "C:\Program Files\DevExpress 15.1\Components\Sources\DevExpress.XtraBars\DevExpress.WinRTPresenter\DevExpress.WinRTPresenter.csproj"
C:\Program Files\DevExpress 15.1\Components\Sources\DevExpress.XtraBars\DevExpress.WinRTPresenter\DevExpress.WinRTPresenter.csproj(104,3): error MSB4019: 未找到导入的项目“C:\Program Files\MSBuild\Microsoft\WindowsXaml\v11.0\Microsoft.Windows.UI.Xaml.CSharp.targets”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。
这个报错是由于缺乏WindowsXaml,有时候是提示V12.0,装了VS2013就有了V12.0,多是项目的代码写的有问题吧。 (XMAL目前还没编译成功,试过用WIN10 LTSC 2019编译失败,由于缺乏C:\Program Files\MSBuild\Microsoft\WindowsXaml\v12.0\Microsoft.Windows.UI.Xaml.CSharp.targets这个文件,试了用WIN8.1+VS2010sp1+VS2013update5的环境编译,仍是不行。)
DevExpress.Persistent.BaseImpl.csproj提示出错是由于项目文件里面的StrongKey为false致使注册DLL失败,编辑这个项目文件手动改成true便可,以下:
<AssemblyOriginatorKeyFile>..\..\DevExpress.Key\StrongKey.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
DevExpress的代码重编译真是坑人,真是太麻烦了,又要新系统,又要用旧的VS2010,那个工具又是各类坑爹,谷歌访问不了,判断.NET4.5也是常常判断错误。
五:感谢
官方重编译教程:https://www.devexpress.com/Support/Center/Question/Details/A609/how-to-rebuild-assemblies-from-the-source-code
部分参考:码农很忙 - DevExpress Components16.2.6 Source Code 重编译教程
C:\Program Files\MSBuild\Microsoft\WindowsXaml