DevExpressComponents-15.1.14 重編譯教程

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

  • Windows 7 旗艦版 SP1 32位(x86) 系統 (本人用的VMWare V14虛擬機掛載,理論上虛擬機版本無所謂,能加載就行)
  • 下面這兩個應該能夠不用安裝,只是WIN7 "SP2"補丁罷了,不過我是在虛擬機安裝後獲取系統更新補丁到最新版,期間會自行安裝.NET Framework 4.7.2:
  • ①Windows6.1-KB3020369-x86.msu
  • ②windows6.1-kb3125574-v4-x86_ba1ff5537312561795cc04db0b02fbb0a74b2cbd.msu(至關於SP2補丁,微軟官方要求先安裝KB3020369)
  • VS2010:cn_visual_studio_2010_ultimate_x86_dvd_532347.iso (自帶SilverLight5 SDK)
  • VS2010 SP1補丁 (迅雷直接添加任務:http://download.microsoft.com/download/E/B/A/EBA0A152-F426-47E6-9E3F-EFB686E3CA20/VS2010SP1dvd1.iso) (VS2010 SP1補丁貌似能夠不用安裝。我還看過一個帖子說VS2010都不用安裝完整版,裝個VS2010 Shell便可,不過我試過用WIN8.1系統安裝後,gacutil找不到,裝了4.7.2的SDK好像版本又太新了,並且4.5的SDK提示安裝不了)
  • ASP.NET MVC 3 RTM (V3.0版本:https://www.microsoft.com/zh-cn/download/details.aspx?id=4211 或者V3.1版本: https://www.microsoft.com/zh-CN/download/details.aspx?id=1491)
  • DevExpressComponents-15.1.14.exe (採用離線註冊的方式獲取到源代碼,WIN7下面安裝的話那個XMAL是不能勾選的,要求8.1以上系統,那個東西暫時不須要)
  • Source Code Builder Tool (https://go.devexpress.com/DevExpress_SourceCodeBuilderTool.aspx)

    須要下載帖子裏面提到的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版本了。你只要確保程序和功能裏面已經安裝了便可)網站

  • DevExpress 編譯過程當中須要用到的dll (http://pan.baidu.com/s/1dENTIsp)解壓後採用以下腳本另存爲bat格式文件,右鍵管理員方式運行便可(若是gacutil路徑不對,請自行修改,如Program Files (x86), v8.0A等:
    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文件,下面列一下部分錯誤的解決方法:

  • Error -DevExpress.Web.Mvc5.v15.1
  • Error -DevExpress.Web.Mvc.v15.1
  • Error -DevExpress.Dashboard.v15.1.Web.Mvc5
  • Error -DevExpress.Dashboard.v15.1.Web.Mvc

以上四個項目是缺乏ASP.NET MVC 3 RTM組件致使,安裝後便可解決。(DevExpress官方真是坑爹)

  • 2019/3/2 13:43:08 Error -DevExpress.WinRTPresenter

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的環境編譯,仍是不行。)

  • Error -DevExpress.Persistent.BaseImpl

 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

相關文章
相關標籤/搜索