一:前言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