用aspnet_compiler发布网站 (转载:My way of my life )
在asp.net 2.0模型中,vs2005已經完全脫離了編譯而成為了一個徹底的ide.算是一個不小的改動。其中更是取消了有關Web Application的概念,使得習慣了vs2003的人剛開始的時候會有一些摸不著頭腦。下面簡單說一下我在使用過程中自己總結的,算是一點經驗。
新建web工程并且位置是文件系統的時候,vs2005只是幫你建好了一個sln文件,這個東西只是指引msbuild 如何進行編譯的,過程是:ide 調用 msbuild ,msbuild解析sln文件,msbuild調用aspnet_compiler.exe進行網站的編譯。所以aspnet_compiler.exe只是負責進行網站的編譯的。
預編譯的概念在 .netframework 1.1 里面就存在了,vs2003中的預編譯指的是將頁面對應的cs/vb文件與resx文件編譯后統一集成到一個dll中放到bin目錄下,將aspx文件直接拷貝過去。這樣做會留下隱患,因為aspx文件就直接暴露在最后的發行包中,如果完全是codeb-behind模型還好,只能改改界面,如果采用了頁面上的來生成頁面,源代碼就暴露了。針對這些問題,vs2005采用了一種新的模式。
請參看ASP.NET 編譯工具 (Aspnet_compiler.exe) 這篇文章了解對各種文件的處理方式。
IDE發布:
vs2005中選擇 生成-〉發布網站,在對話框中的操作將映射到aspnet_compiler.exe的參數中,可更新的發布對應 -u,其他選項類似,請參考上面的文章了解。
注意:發布時將忽略web.config中的debug參數,統一生成無調試信息的文件。
手工編譯:
簡單說來,如果是無更新發布模式編譯,appcode下面的class編譯成dll放在bin下,頁面內容清空位置不變作占位用,同時頁面被編譯成一個隨機名稱的dll,增加一個同名.compiled文件到bin目錄下,內容大概如下:
里面只是列出了頁面上的customcontrol,這里已經完成了和masterfile的映射。這樣最大限度的保護了頁面的敏感信息,發布過的網站中只能看見一堆文件名了。可更新的發布模式與vs2003類似,頁面就直接拷貝過來不予編譯了。
講了一堆原理,下面說一下aspnet_compiler.exe的調用方法,這是我使用的例子
我的開發目錄是這樣的
使用的命令如下:
aspnet_compiler -v / -p .\devroot -f .\pubroot
分析:
- -v / 指明了iis的虛擬目錄
- -p .\devroot 表示代碼實際位置
- .\pubroot 指明了要發布的位置
- -f 表示強制改寫目標位置
你還可以用-u來進行傳統意義上的預編譯,-d來插入編譯符號。
總的來說,aspnet_compile結合msbuild,提供了一個很好的自動化編譯環境,值得研究研究:)
轉載于:https://www.cnblogs.com/jomi/archive/2006/10/12/527791.html
總結
以上是生活随笔為你收集整理的用aspnet_compiler发布网站 (转载:My way of my life )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在梦里梦到自己喜欢的人说明什么
- 下一篇: 梦到自己发胖什么预兆