vs2005發佈站點生成隨機的dll文件名的解決方案

轉自:http://blog.csdn.net/zhanglei5415/archive/2007/10/09/1817000.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="首頁" %>

 

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