掌握Microsoft Web Deployment Projects配置相關技巧
由于Microsoft Web Deployment Projects工具太多,此處無法上傳說明,所以大家有communitysever的可以從里面獲得然后反編譯為自己所用,沒有的就到網絡上搜下吧,有許多資源呢!
在Visual Studio 2003下開發(fā)網站的都知道Microsoft Web Deployment Projects網站生成后都是一個唯一命名的程序集(項目名稱.DLL),但是這種情況在Visual Studio 2005的網站開發(fā)中不見了。Visual Studio 2005給我們提供了“發(fā)布網站”這樣方便的功能,不用在像以前一樣COPY的部署。#t#
但是采用其“發(fā)布網站”的功能,會在站點的BIN目錄中產生App_Code.compiled,App_Code.dll,App_Web_xxxxxx.dll,項目名稱.dll等等這樣的程序集,如果不采用預編譯的方式那么產生的文件會更加的多,因為很多都是隨機命名也沒有什么規(guī)律可言;這樣會給那些想COPY更新的人帶來不便,因為原來的文件不能被覆蓋,需要先刪除再COPY;有很多時候可能就是更新了后臺代碼,直接生成項目或是WEB的程序集,像以前一樣直接覆蓋DLL的方式也很簡單。
也許很多人不會考慮BIN下存放的東西,只要站點能運行就好了,那么這樣的人讀到這里也就沒有必要再看此文章,要知道時間是寶貴的,浪費在自己不關心的事情上很不值得的。
上面羅嗦了一堆,下面筆者將介紹采用Microsoft Web Deployment Projects在Visual Studio 2005中生成唯一程序集的方法。關于Microsoft Web Deployment Projects工具可以從微軟站點獲得詳盡的資料,我也沒什么好說的了微軟寫的很清楚了,呵呵。
安裝后在“生成”和WEB項目的上下文菜單看到“Add Web Deployment Project…”,好了添加一個Web Deployment Project項目,起一個名稱,這個名稱就是將來編譯后生成的程序集名稱,默認的名稱“當前項目名稱_deploy”
我們的解決方案包括22個項目(主要是類庫),其中的一個WEB項目是負責用戶UI的,傳統的生成或是發(fā)布網站的方式沒有任何問題,當使用Microsoft Web Deployment Projects工具生成唯一程序集時出現了錯誤信息“Aspnet_merge.exe Exited with Code 1”(Aspnet_merge.exe 退出,錯誤代碼1),這樣的信息根本無法讓我們辦斷到底是哪里出了問題。好,下面依次打開VS 2005的工具-選項-項目和解決方案-生成并運行,設置“MSBuild 項目生成輸出詳細信息”,選擇“詳細”。再次生成Web Deployment Projects項目,注意“輸出”框內的信息現在變得非常豐富了。
***導致無法編譯的問題終于出來了“An error occurred when merging assemblies: ILMerge.Merge: ERROR!!: Duplicate type ‘_Default’ found in assembly 'App_Web_k5hhsnh0'”,它的意思是說在程序集中發(fā)現了相同的類型_Default,經過我檢查確實在我們的WEB項目中存在了兩個_Default類(在不同的目錄中),這樣的問題通過一般的生成完成和發(fā)布網站肯定都是檢測不出來的,運行也是正常的。