VS 發布網站時如何產生固定命名的 Dll 檔案 WebDeploymentSetup使用說明

來源:互聯網
上載者:User
VS2008 在發布網站時,bin 目錄裡為所有 cs 產生的 dll 檔案每次都是隨機命名的,像這樣子的 App_Web_g2dnx-qj.dll, App_Web_s9nor8mv.dll,這樣對更新 Live 網站很不方便,因為動態庫名變了,涉及到每一個 aspx 檔案每次都重新更改了對庫的引用聲明:

<%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_s9nor8mv" %>

即使有一個 cs 的小改動,由於產生的動態庫名稱不一樣,造成所有的 aspx 檔案都得重傳一遍。如果能固定動態庫的檔案名稱,更新網站時就省事多了,只改了 cs 的話,重建 dll 檔案,只需要替換這一個 dll 檔案就 OK 啦。我們可以找到幾種做法:

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。

簡單操作如下:

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 的版本出來,所以這應該是終極的。

參考:1. VS2008發布、產生網站時如何設定固定的dll檔案名稱?
        2. 巧用VS2005解決VS2005網站發布不便問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.