VS2005,VS2008,VS2010將ASP.NET網站編譯成一個DLL文件

 
分類: C#/ASP.Net

VS在發佈網站時,bin目錄裏爲所有cs生成的dll文件每次都是隨機命名的,如:App_Web_xxxxxxxx.dll(xxxxxxx是 8個小寫的字母和數字組成的字符串,隨機的),這樣對更新 Live 站點很不方便,因爲動態庫名變了,涉及到每一個 aspx 文件每次都重新更改了對庫的引用聲明:
        <%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_s9nor8mv" %>
即使有一個 cs 的小改動,由於生成的動態庫名稱不一樣,造成所有的aspx文件都得重傳一遍。如果能固定動態庫的文件名,更新網站時就省事多了,只改了 cs 的話,重新生成 dll 文件,只需要替換這一個 dll 文件就可以了。

===========================================================

VS2005環境下:
Web Deployment Projects with Visual Studio 2005下載地址:
        下載地址一:(大小爲:905K)
        http://download.microsoft.com/download/c/c/b/ccb4877f-55f7-4478-8f16-e41886607a0e/WebDeploymentSetup.msi
        下載地址二:(大小爲:919K)
        http://download.microsoft.com/download/9/4/9/9496adc4-574e-4043-bb70-bc841e27f13c/WebDeploymentSetup.msi
        當你下載地址一給的鏈接時,編譯後的文件,如果aspx中含有中文字符,頁面將很可能顯示爲亂碼,所以,請下載者注意版本問題。
簡單操作如下:
1.下載後直接安裝,安裝完後打開VS2005;
2. 在[生成]->[發佈網站]下面會多出一項[Add Web Deployment Project],也可在要發佈的網站項目上點右鍵.直接選取 [Add Web Deployment Project],彈出屬性對話框後,設置好指定名稱和存放目錄添加後,可以看到當前解決方案中多了一項,有很多其它屬性,可以自己去設置;
3.在剛添加的方案中點右鍵->[生成],就會生成相應文件和目錄。

===========================================================

VS2008環境下:
方法1: 在“發佈網站”的選項中,勾選“使用固定命名和單頁程序集”,每個頁面對應的一個 dll,並且這個 dll 文件名是固定的(名字雖然看起來很隨便),只要 aspx 文件名沒變。這會生成大量的 dll 文件,實際應用中還沒看到可取之處。

方法2.:把所有的 cs 文件放到 App_Code 目錄中,這樣所有的 cs 每次都生成到 App_Code.dll 動態庫中。這時候的 aspx 文件第一行指令在新建後要更改爲:
        <%@ Page Language="C#" AutoEventWireup="true"  Inherits="_Default" %>
        或者:
        <%@ Page Language="C#" AutoEventWireup="true"  Inherits="_Default, App_Code" %>
這樣發佈的時候,對 cs 的小改動只需替換一個 App_Code.dll 文件即可。在不使用 CodeFile 屬性時,VS 沒理由要修改你的 aspx 文件頭。

方法3:其實與前一種十分類似,如果覺得把 aspx 對應的 cs  文件放到 App_Code 目錄中有點唐突,那麼爲當前解決方案新加一個 Class Library 項目,例如 ClassLibrary1,把 aspx 的 cs 文件都放到這個工程中吧,相應的 aspx 文件指令就是:
        <%@ Page Language="C#" AutoEventWireup="true"  Inherits="_Default" %>
        或者:
        <%@ Page Language="C#" AutoEventWireup="true"  Inherits="_Default, ClassLibrary1" %>
小改動替換 ClassLibrary1.dll 即可,同理在不使用 CodeFile 屬性時,VS 沒理由要修改你的 aspx 文件頭。只有 cs 文件也要放服務器上,由 Asp.Net 來編譯程序時,CodeFile 指令纔是有其作爲的。

方法4:Web Deployment Projects with Visual Studio 2008下載地址:
        http://download.microsoft.com/download/0/5/b/05b4424b-5b9b-4961-8ec6-91e9f1741b2d/WebDeploymentSetup.msi (大小爲:686K)
        http://download.microsoft.com/download/0/5/b/05b4424b-5b9b-4961-8ec6-91e9f1741b2d/WebDeploymentSetup.msi
簡單操作如下:
1) 下載後直接安裝,安裝完後打開VS2008;
2) 在[生成]->[發佈網站]下面會多出一項[Add Web Deployment Project], 也可在要發佈的網站項目上點右鍵.直接選取[Add Web Deployment Project],彈出屬性對話框後. 設置好指定名稱(如 WebSite1_deploy)和存放目錄(c:\target), 添加後, 可以看到當前解決方案中多了一項( WebSite1_deploy), WebSite1_deploy 有很多其它屬性可以設置,其中有一重要的默認選項:
        Merge all outputs to a single assembly
        Assembly name: 是 WebSite1_deploy.
3) 在剛添加的方案中點右鍵->[生成], 或者是對 WebSite1_deploy 進行 Build 都會在前面指定的目錄(c:\target) 中生成可發佈的文件的目錄了。進到 c:\target 目錄中,翻一下你就會發現你的 Web 項目中所有的 cs 文件,包括 aspx 關聯的和 App_Code 中的 css 文件都編譯到 WebSite1_deploy.dll 文件中去了。aspx 文件的頭部是:
        <%@ page language="C#" autoeventwireup="true" inherits="Default, WebSite1_deploy" %>
只要 WebSite1_deploy.dll 文件名是固定的,aspx 的聲明部分也總是不變的,所以每次只是對 cs 文件的修改補,只需換個 WebSite1_deploy.dll 文件就可以了。

相比於第二、三種方法,只需一次設置,用不着每建一個 aspx 文件對代碼文件進行搬動,還得改改 aspx 文件的聲明部分,而且對於 Web Site 也能構建出 DEBUG 的版本出來,所以這應該是終極的。

===========================================================

VS2010環境下:

1.Visual Studio® 2010 Web Deployment Projects下載地址:
        http://www.microsoft.com/downloads/details.aspx?FamilyID=89f2c4f5-5d3a-49b6-bcad-f776c6edfa63&displaylang=en

2 安裝Visual Studio® 2010 Web Deployment Projects插件,然後再網站項目上點擊右鍵,可以看到多了一項Add Web Deployment Project

3 點擊Add Web Deployment Project,彈出如下對話框

4 名稱和路徑可以修改,一般默認就好,點擊OK,在解決方案中會生成一個部署項目

5 在部署項目點擊右鍵,點擊“生成”

6 生成成功後,在部署項目的目錄中會產生一個Release目錄,Release目錄中就是項目發佈的所有文件,在bin目錄中可以看到並沒有之前那樣有很 多不規則命名的dll,生成的dll的名稱和前面添加部署項目時所填寫的名稱相同,爲EduAppWeb_deploy

 

本文轉自:http://www.cnblogs.com/suzh/archive/2011/04/26/2029564.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章