asp.net發佈網站時三個選項的問題

發佈網站的時候有三個選項,很多人都不知道到底是怎麼用的,簡單說說:  
   
  第一個選項指定發佈後是不是可以修改aspx文件,如果勾選,則發佈後的網站行爲基本與ASP.NET   1.1一致,只要沒有增刪修改控件,可以直接在服務器上修改aspx文件不用重新發佈網站。  
   
  第二個選項指定是不是將每個aspx文件都編譯成一個DLL文件,這樣,就可以在修改了哪個aspx網頁(包括aspx和cs文件),只需要更新一個DLL文件就行了,不用整站全部更新。
 
1.允許更新此預編輯站點
選中這一項後,編譯出來的包括aspx文件和dll,與2003下一樣。
不選中這一項,編譯出來的aspx中沒有界面信息,只有一句靜態文本,就是不允許發佈後修改頁面
爲了不讓訂閱網站的用戶在第一次打開頁面時感受到明顯的延遲,可以使用"完全預編譯(full pre-compilation)"方式.
如果是想此編譯方式具有最大的安全性,應去掉"允許更新此預編譯站點(Allow this precompiled site to be updateable". 這樣代碼文件(code,即cs文件)和內容文件(content file,即aspx)都會預編譯

2,使用固定命名和單頁程序集
會案照畫面的類名編譯出很多名字固定的dll。

3.對預編輯程序集啓用強命名
在多數情況下,完全預編譯方式正是所需要的方式,但是有時候因爲內容文件變化不大,你可能希望在網站發佈後,不用每次把所有的代碼與內容文件全部編譯,也許內容文件就不用再次編譯,只需編譯代碼文件即可,這種情況下,就選中"允許更新此預編譯站點",這種方式稱爲"只預編譯代碼文件(pre- compilation of code only)"方式.此方式與"完全預編譯方式"相比較,只有一點區別,即內容文件仍是原始版本,而不是存根 (stub)版本,其它效果相同.在內容文件發佈後也可以對其進行編輯,其變動在以後的請求到來時起作用,對於訪問此站的用戶來說是透明的.


附:
強命名(strong names) 如果一個assembly需要共享,則其必須使用強命名.一個強命名唯一標識了一個assembly.有四部分組成: 1,assembly名稱(不包含文件擴展名);2,版本; 3,culture;   4,密鑰對(即一個公鑰和一個私鑰),保存在key文件中,所以說 key文件就是同時包含了公鑰和私鑰的文件,在使用強命名時當然是需要此key文件的.創建key文件用命令: sn -k KeyPair.snk

延遲簽名:顯然,每個公司的私鑰都必須非常安全地保存,然後這就帶來一個進退兩難的問題:在開發和測試一個共享的assembly時,需要使用強命名方式, 而創建強命名時肯定需要訪問私鑰的,但是又不能把公司的私鑰提供給參與項目開發的且需要創建強命名的所有開發人員,怎麼辦? 這時就要用"延遲簽名"技術.此種方式下,在創建強命名assembly時,只需要提供公鑰,因爲公鑰提供給所有的人是允許的,也是安全的,利用公鑰,開發人員可以進行程序的開發和測試工作,直到準備進行最終的build時,才同時使用公鑰和私鑰. 延遲簽名需要從key文件中把公鑰解出來,形成獨立的公鑰文件,通過使用命令: sn -p KeyPair.snk PublicKey.snk即可.這樣,publicKey.snk只包含公鑰,就可以用了.
出現問題
visual studio2005將網站開發和網站發佈的目錄分開,本身是個很好的設定
但每一次發佈網站,網站dll文件都會生成隨機的名字,頁面繼承的類都會繼承隨機的名字
這就造成了,哪怕是一點很小的修改,在發佈網站之後,也必須重新上傳所有的頁面
如果採用“固定命名和單頁程序集”的方式,又會生成太多dll文件,看着就心煩  
解決方法
安裝:   
[url]http://download.microsoft.com/download/9/4/9/9496adc4-574e-4043-bb70-bc841e27f13c/WebDeploymentSetup.msi[/url]
    
右鍵在當前解決方案裏生成一個:Add Web Deployment Project 項目, 在該項目裏就可以設置生成DLL的命名方式了,以後生成該項目就可以生成相應的網站!原有的發佈網站的功能可以退休了!

參考微軟原文
VS2005發佈網站時不會像VS2003一樣生成規則的DLL文件、而生成的DLL文件名含有隨機數且不能一個項目生成一個DLL文件、讓人有一些遺憾、爲了做到像vs2003一樣,微軟發佈了WebDeployment Project插件可解決此問題:
下載地址
1、下載後安裝、右鍵選擇vs2005中的項目、會出現一個選項"Add Web Deployment Project"([url]http://www.cnblogs.com/chy710[/url])

2、選擇添加一個WebDeployment Project(輸入程序集名稱和發佈地址)

3、此時解決方案中會多出一個項目([url]http://www.cnblogs.com/chy710[/url])

4、右鍵選擇該項目設置相應屬性


5、右鍵選擇該項目選擇“生成”、此時會發佈網站到指定的目錄、生成DLL文件同vs2003一樣、更新時只需上傳DLL文件
([url]http://www.cnblogs.com/chy710[/url])
我運行發現這個錯,
錯誤 1 “aspnet_merge.exe”已退出,代碼爲 1。 C:"Program Files"MSBuild"Microsoft"WebDeployment"v8.0"Microsoft.WebDeployment.targets 574 9 DaishuSite
後來網上查了下。是類存在同名的緣故。
將VS 2005的工具-選項-項目和解決方案-生成並運行,設置“MSBuild 項目生成輸出詳細信息”,選擇“詳細”。再次生成Web Deployment Projects項目,“輸出”框內的信息就變得非常豐富了;這樣就可以查看哪裏出錯了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章