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檔案,看著就心煩
解決方案
安裝:
http://download.microsoft.com/download/9/4/9/9496adc4-574e-4043-bb70-bc841e27f13c/WebDeploymentSetup.msi
右鍵在當前解決方案裡產生一個:Add Web Deployment Project 項目, 在該項目裡就可以設定產生DLL的命名方式了,以後產生該項目就可以產生相應的網站!原有的發布網站的功能可以退休了!
參考微軟原文
http://msdn2.microsoft.com/en-us/asp.net/aa336619.aspx
使用WebDeployment Project改善VS2005發布網站問題 (一) 基礎
VS2005發布網站時不會像VS2003一樣建置規則的DLL檔案、而產生的DLL檔案名稱含有隨機數且不能一個項目產生一個DLL檔案、讓人有一些遺憾、為了做到像vs2003一樣,微軟發布了WebDeployment Project外掛程式可解決此問題:
1、下載後安裝、右鍵選擇vs2005中的項目、會出現一個選項"Add Web Deployment Project"(http://www.cnblogs.com/chy710)
2、選擇添加一個WebDeployment Project(輸入程式集名稱和發布地址)
3、此時解決方案中會多出一個項目(http://www.cnblogs.com/chy710)
4、右鍵選擇該項目設定相應屬性
5、右鍵選擇該項目選擇“產生”、此時會發布網站到指定的目錄、產生DLL檔案同vs2003一樣、更新時只需上傳DLL檔案
(http://www.cnblogs.com/chy710)
我運行發現這個錯,
錯誤 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項目,“輸出”框內的資訊就變得非常豐富了;這樣就可以查看哪裡出錯了