原創|其它|編輯:郝浩|2011-12-29 20:21:11.000|閱讀 1168 次
概述:這是我在看了別人的一篇用VS2005編譯7.1的版本后自己用VS2008編譯8.2.6時記下的,以供大家參考。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
這是我在看了別人的一篇用VS2005編譯7.1的版本后自己用VS2008編譯8.2.6時記下的,以供大家參考:
1. 為了文檔和示例,麻煩各位先去官網下載一個 for VS2008 的 Eval (我用的是 v8.2.6 );
2. 下回來自然就是安裝,一路回車,最后有個地方問你要不要 merge,你 merge 了最好,幫助就和 MSDN 集成了;你不 merge 也不怪你;
3. 解開你心愛的源碼包,你要解哪里都行,那么多個文件夾你別扔根目錄就行了;
4. 打開 VS2008,新建一個空白解決方案,然后,就把剛才解開的文件里的每個項目,一個一個加到解決方案里去(有些文件夾進去,直接看不到項目文件,那就得再進一層),如果沒數錯,最后一共是64個項目(總之,你需要點耐心完成這個使命);
5. 好了,接下來就是生成你的強名稱數字簽名文件,聽起來有點先進,不過就是到命令行執行一下:sn -k StrongKey.snk(別告訴我你執行的時候報錯,那是因為你沒這樣進入命令行:“開始”-“Microsoft Visual Studio 2008”-Visual Studio Tools”-“Visual Studio 2008 命令提示行”);建議你最好先CD(給鮮用 DOS 的兄弟姐妹:這個是命令行模式下切換目錄的命令)到源碼解壓的地方,進入到 DevExpress.Key 文件夾,然后再執行這個命令,這樣免得你滿硬盤找生成的 SNK 文件(就是那個“先進”的東西),因為這個東西必須最終在 DevExpress.Key 文件夾安家;
6.生成StrongKey.snk文件之后,還要再導出你的公鑰:第一步:sn -p StrongKey.snk key.txt 第二步:sn -tp key.txt
這時你看到了吧,那一長串字符就是你的公鑰,分別記下公鑰和公鑰標記,我們在后面還要用到。
7. 再 Next 嘛,就是我們艱辛的編譯過程了;必須明確的是編譯順序,因為64個項目互相勾引著,稍不注意,就要打架的;
8. 編譯順序如下:DevExpress.Data DevExpress.Utils DevExpress.XtraEditors DevExpress.XtraNavBar DevExpress.XtraGrid,剩下的順序亂了問題不大;我只說了個大概順序,由于項目較多,還是請您自己編譯的時候留心有順序問題,從項目引 用就能看出來;編譯通不過就先編譯其他的;實踐證明,最終除了 DevExpress.Xpo.Providers 和 DevExpress.Xpo.Providers.Compact 都能通過(這兩個項目編譯不過的原因是其需要第三方的庫支持,如 DB2、Oracle 的等等,用不上就不管,要用的話自己先找到對應的 DLL 才行)。
9. 為什么要注意順序呢?如同有了你爸爸,才有了你自己,不可能說先有了你自己才有你爸爸,大家講道理嘛!源碼包里的項目也是這樣,我要引用你,但你又得引用 他,在你沒引用他之前,我就找不到地方去引用你;因為源碼包里項目的引用都是根據程序集的 Token 來的(Token 什么意思,簡單說就是一個 SNK 文件對應一個Token),解壓后有個文件夾 DevExpress.DLL,里面全是評估版的 DLL,這些 DLL 都是通過會被程序代碼識別為評估版的 SNK 生成的,如果編譯的時候 Token 不匹配,就會報錯,還會是一大堆錯,直到你先編譯生成新的被引用的 DLL,Token 得到更新,該項目的編譯才不會報錯;以后編譯的時候,如果 SNK 文件沒變,那你就改了哪個項目就單獨編哪個吧,不再需要再注意順序了,這又為什么呢?因為在你第一次編譯的時候,所有的程序集都生成了新的 DLL,這些 DLL 的 Token 根據你的 SNK 文件已經確定了下來,并且都在 DevExpress.DLL 里留了下來,編譯的時候就不會說找不到了;
10. 為什么要漢化?因為控件里用于呈現給客戶的地方,只要有字的,如上下文菜單,都會是英文的,誰叫 Dev 公司在 LasVegas 而不是 Macao,而你要開發的軟件,又都是給說中國話的人用的(我指絕大多數);那怎么漢化呢?凡是你在項目文件夾下看到 LocalizationRes.resx 文件的,你都可以用鼠標輕輕點開它,并小心修改之,再說簡單點就是把右邊列的英文內容改成你要的漢字,再編譯一次就變中文啦!
11. 編譯還需要注意的:所有 DevExpress 的控件引用地址是 C:\Program Files\...,遇到這種,請你直接添加對應控件項目到引用(別加 DLL 了。如果引用項目里沒有對應的,說明你還沒在解決方案中加入該項目),再把對應的DLL引用刪除掉(最是后面顯示帶有v8.2的,這全是,也可以和你加入 的項目引用做一下對比,免得你DEL了后編譯時找不到引用),再回過頭編譯就好了;
12.打開DevExpress.Web.ASPxScheduler 項目中的AssemblyInfo.cs 文件,在倒數第4行你發現有 “PublicKey=”這么一段,后面與我第6步生成的公鑰怎么那么像呢!?那就替掉吧,好像有6到7處吧。
13. 有兩個項目,請你不要編譯:DevExpress.Xpo.Providers and DevExpress .Xpo.Providers.Compact,為什么?兩個項目都引用了第三方的 DLL,源碼包里是沒有的,比如 IBM 的、Oracle 的,需要的話可以自己去找找;
14. 終于編譯完畢,請你打開 DevExpress.DLL 目錄,把里面的所有 DLL 文件 Ctrl+C 一下,然后請你打開安裝評估版的文件夾,定位到 C:\Program Files\Developer Express .NET 2008 v8.2\Sources\DevExpress.DLL(默認安裝情況下),Ctrl+V 一下,覆蓋掉評估版的DLL;
15. 還沒完,另開一個窗口,定位到 C:\Windows\Assembly,里面已有的 DevExpress 的庫請不要刪除,這樣 Eval 帶的 Demo 和 Tools 才能正常運行(Tools都沒源碼,找不到 Eval 的庫就沒法用了),然后從剛才的窗口 C:\Program Files\Developer Express .NET 2008 v8.2\Sources\DevExpress.DLL,把所有 DLL “拖”到這個 Assembly 里,注意,這是 GAC(GAC 是什么?今天你谷歌了嗎?),只能用拖的,不能用粘貼(你粘不過來的),這下 GAC 里就有新的 DevExpress 控件 DLL 了;
16. 接著,把你的 VS2008 關掉,然后點“開始”-“Developer Express .NET 2008 v8.2”-“Tools”-“ToolboxCreator”,運行完后 VS 工具欄就更新了,而且分類也沒亂;為什么要更新?還是因為 Token;
17. 為了確保添加報表文件時調用向導不出錯,最后 N 步,請你打開文件夾:C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp、VisualBasic、Web\CSharp、Web \VisualBasic解壓 XtraReportWizard.v8.2.zip、XpoClasses.v8.2.zip、XtraReport.v8.2.zip 等文件;然后,用記事本打開 XtraReport.vstemplate、Class.vstemplate 文件,瀏覽到后面,看到 PublicKeyToken 那里,現在是等于 9b171c9fd64da1d1 吧?(評估版都這個 Token)對了,就是把這里的 Token 改成你自己的(在 Assembly 文件夾里,請用鼠標右鍵點任一個你剛編譯的 DLL,查看屬性,復制 Token,粘貼覆蓋掉原文件里評估版的那一串值即可。);然后,保存文件,重新打包成zip文件 即可(連同原有的兩個 CS 文件);
18. 關于重編項目再更新:把更新的 DLL 復制到 C:\Program Files\Developer Express .NET 2008 v8.2\Sources\DevExpress.DLL,拖一份到 Assembly,只要 SNK 沒變,意味著你生成的 DLL Token 沒變,你也不必先在 Assembly 里執行刪除,拖動后會自動覆蓋的,你也不用再執行 ToolboxCreator,當然,你要是 SNK 都變了,把這兩步補上才能圓滿;
19. 此版本有一處問題,地方忘了,報“不是所有路徑都有返回值”,其實加一個 else 語句就行了。(如果用VS2005這應該只是個警告,但在2008中卻升級成了錯誤。唉)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載