VS2005下爲ASP.NET 2.0網站生成唯一程序集

我的新聞管理系統http://cms.bmw.net.cn/Index.aspx是按照本文中的方法發佈的.

在Visual Studio 2003下開發網站的都知道ASP.NET 1.1網站生成後都是一個唯一命名的程序集(項目名

稱.DLL),但是這種情況在Visual Studio 2005的網站開發中不見了。Visual Studio 2005給我們提供了“發佈網站”這樣“方便”的功能,不用像以前一樣COPY的部署,但是採用其“發佈網站”的功能,會在站點的BIN目錄中產生App_Code.compiled,App_Code.dll,App_Web_xxxxxx.dll,項目名稱.dll等等這樣的程序集,如果不採用預編譯的方式那麼產生的文件會更加的多,因爲很多都是隨機命名也沒有什麼規律可言;這樣會給那些想COPY更新的人帶來不便,因爲原來的文件不能被覆蓋,需要先刪除再COPY;有很多時候可能就是更新了後臺代碼,直接生成項目或是WEB的程序集,像以前一樣直接覆蓋DLL的方式也很簡單。

下面將介紹我採用Microsoft Web Deployment Projects在Visual Studio 2005中生成唯一程序集的方法。

先下載Microsoft Web Deployment Projects,地址是:
http://msdn2.microsoft.com/en-us/asp.net/aa336619.aspx

聲明一下,我用的VS2005是Team suit版本的。

安裝後在“生成”和WEB項目的上下文菜單看到“Add Web Deployment Project…”,好了,現在在解決方案中點你的網站項目名稱,右鍵,添加一個Web Deployment Project項目,起一個名稱,這個名稱就是將來編譯後生成的程序集名稱,默認的名稱“當前項目名稱_deploy”(我的項目是Web_deploy),這樣操作後項目解決方案中會多一個項目Web_deploy,然後我們對Web_deploy進行操作就可以達到我們的目的了。

右鍵打開Web_deploy項目的屬性頁面,察看“配置屬性”,先看"Compilation"選項:

Compilation中的Output Folder設置項目輸出路徑,這個可以默認。
我們把Generate debug information和Allow this precompiled site to be updatable兩項的對勾打上。

Output Assemblies中的四大選項:
1. Merge all outputs to a single assembly-所有輸出都編譯成一個程序集(參數:程序集名稱) 1.1 Treat as library component (remove the App_Code.compiled file)-App_Code視爲類庫(刪除App_Code.compiled文件)

2. Merge each individual folder output to its own assembly-WEB項目中單獨的目錄會編譯到一個程序集中(參數:程序集前綴)

3. Merge all pages and control outputs to a single assembly-所有頁面控件編譯到一個程序集中(參數:程序集名稱)

4. Create a separate assembly for each page and control output-爲每一個頁面和控件創建程序集Signing使用key文件建立強命名空間的程序集這裏我們只需要設置“1. Merge all outputs to a single assembly-所有輸出都編譯成一個程序集(參數:程序集名稱)”(我設置的是Web_deploy)和“1.1 Treat as library component (remove the App_Code.compiled file)-App_Code視爲類庫(刪除App_Code.compiled文件)”(這個對勾要打上)。

這樣,我們再把程序的頁面繼承關係改一下就可以發佈網站了!舉個例子:

網站中每個ASPX文件的PAGE我們這樣改:
Index.aspx
<%@ page Language="C#" MasterpageFile="~/MasterPage.master" AutoEventWireup="true"

CodeFile="Index.aspx.cs" Inherits="wjj.Web.Index" Title="首頁" %>
注意其中的Inherits="wjj.Web.Index",wjj.Web是我網站的我自己定義的命名空間。

Index.aspx.cs也要加上命名空間

namespace wjj.Web
{
public partial class Index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}
}

好了,點項目Web_deploy右鍵---重新生成就可以了,終於把問題解決了!

Index.aspx生成後的PAGE如下:
<%@ page language="C#" masterpagefile="~/MasterPageDefault.master" autoeventwireup="true"

inherits="wjj.Web.Index, Web_deploy" title="首頁" %>

posted @ 2006-11-22 09:25 碧血黃沙.NET 閱讀(6074) 評論(24) 編輯 收藏 網摘 所屬分類: ASP.NET

發表評論
回覆 引用 查看 #1樓 2006-11-22 09:39 | 冰戈 有沒有不裝Microsoft Web Deployment Projects的解決辦法?

回覆 引用 查看 #2樓 2006-11-22 09:40 | yunhuasheng 謝謝,正需要呢!

回覆 引用 #3樓 2006-11-22 09:44 | roydu [未註冊用戶] 謝謝!轉了啊,每次全部更新真麻煩.

回覆 引用 #4樓 2006-11-22 09:46 | roydu [未註冊用戶] 再頂一下,老大真是及時雨.

回覆 引用 #5樓 2006-11-22 09:54 | cc[匿名] [未註冊用戶]
哪個隨即身成的dll太無聊

確實還可以

回覆 引用 #6樓 2006-11-22 10:30 | wav [未註冊用戶] 確實不錯,更新方便多了.但是aspx和cs文件也得改太麻煩了.經過測試,我發現不用改aspx和cs文件,只更新項目的dll文件就可以運行.不知道這樣做會不會有問題?

回覆 引用 #7樓 2006-11-22 10:32 | Bluesky[匿名] [未註冊用戶] 感覺這個不太好用,有時會出現合併錯誤。還是等sp2吧。

回覆 引用 查看 #8樓 [樓主]2006-11-22 10:58 | 碧血黃沙 唯一遺憾的是發佈的時候還是把目標文件夾下的文件全部刪除後重新生成,而不是在原有基礎上更新文件

回覆 引用 #9樓 2006-11-22 11:38 | huobazi [未註冊用戶] 沒有必要改文件

回覆 引用 查看 #10樓 2006-11-22 12:20 | Daniel Phang 那個隨即生成DDL的確實比較鬱悶,我後來都用WebApplication了

回覆 引用 查看 #11樓 2006-11-22 12:27 | ※ABeen※ 用編譯命令完成不是更好嗎!也不用去安裝什麼東西了。
方法介紹如下:
預編譯 ASP.NET 網站以進行部署(推薦給客戶部署時使用)
打開一個命令窗口並定位到包含 .NET Framework 的文件夾。

.NET Framework 將安裝在以下位置。


%windir%\Microsoft.NET\Framework\version


運行 aspnet_compiler 命令,將源指定爲虛擬路徑或物理路徑,指定目標文件夾,並指定一個開關以指示是要同時編譯代碼和 .aspx 頁(默

認設置)還是隻編譯代碼。

aspnet_compiler -v virtualPath targetPath


如果您的網站不是 IIS 應用程序,並因此 IIS 元數據庫中沒有項,請爲 -v 開關使用下面的值:


aspnet_compiler -p physicalOrRelativePath -v / targetPath


如果要預編譯該站點以進行部署和更新,請包括 -u 開關,如下面的代碼示例所示。


aspnet_compiler -p physicalOrRelativePath -v / targetPath -u


targetPath 參數是物理路徑。


回覆 引用 #12樓 2006-11-22 13:40 | 幻想曲 [未註冊用戶] 我早就開始用這個了
不需要改什麼配置,最多改一改程序集名稱
至於.aspx頁面更沒改過了....

回覆 引用 查看 #13樓 2006-11-22 14:12 | 堯堯 沒有改過,沒必要吧

回覆 引用 #14樓 2006-11-22 14:21 | cw [未註冊用戶] ok

回覆 引用 #15樓 2006-11-22 14:38 | cw [未註冊用戶] 實際上不應該生成唯一程序集, 2.0的做法是正確的, 我們怎麼卻在開倒車呢???

項目越大, 這種2.0編譯模式的優點越是明顯...

回覆 引用 #16樓 2006-11-22 23:18 | sdfg [未註冊用戶] 進入博客專題研究http://www.xghk.cn

進 入博客專題研究http://xghk.cn

回覆 引用 查看 #17樓 2006-11-23 10:27 | yunhuasheng 謝謝,對我有些用處.

回覆 引用 #18樓 2006-11-23 13:57 | chuanzai [未註冊用戶] 2.0有web site 和 web application
1.1下只有web application
用web application不就好了!

回覆 引用 查看 #19樓 2006-11-23 16:07 | jick web application?
難用得要死!

回覆 引用 #20樓 2006-11-24 09:24 | chy710 [未註冊用戶] http://www.cnblogs.com/chy710/archive/2006/10/26/540959.html

回覆 引用 #21樓 2006-12-25 18:10 | MYQQ [未註冊用戶] 好用,謝謝!

回覆 引用 #22樓 2007-04-20 08:55 | cb [未註冊用戶] 海基會

回覆 引用 #23樓 2007-04-20 08:56 | cb [未註冊用戶] ,mbv

回覆 引用 #24樓 2007-12-27 17:59 | ldcah [未註冊用戶] 謝謝樓主,現在問題解決了,還滿好用的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章