日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用aspnet_compiler发布网站 (转载:My way of my life )

發布時間:2023/11/29 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用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目錄下,內容大概如下:

  • <?xml version="1.0" encoding="utf-8"?>
  • <preserve resultType="3" virtualPath="/Forum/AdminList.aspx" hash="6772609c3" filehash="49154463f1d6738c" flags="110000" assembly="App_Web_hmrycg3w" type="ASP.forum_adminlist_aspx">
  • ?? ?<filedeps>
  • ?? ? ? ?<filedep name="/Controls/footer.ascx" />
  • ?? ? ? ?<filedep name="/Controls/header.ascx" />
  • ?? ? ? ?<filedep name="/Forum/AdminList.aspx" />
  • ?? ? ? ?<filedep name="/Forum/AdminList.aspx.cs" />
  • ?? ? ? ?<filedep name="/Forum/menu.ascx" />
  • ?? ? ? ?<filedep name="/Forum/menu.ascx.cs" />
  • ?? ?</filedeps>
  • </preserve>
  • 里面只是列出了頁面上的customcontrol,這里已經完成了和masterfile的映射。這樣最大限度的保護了頁面的敏感信息,發布過的網站中只能看見一堆文件名了。可更新的發布模式與vs2003類似,頁面就直接拷貝過來不予編譯了。

    講了一堆原理,下面說一下aspnet_compiler.exe的調用方法,這是我使用的例子

    我的開發目錄是這樣的

  • Project/
  • ?? ? ? ? ?library/
  • ?? ? ? ? ?devroot/
  • ?? ? ? ? ?pubroot/
  • ?? ? ? ? ?proj.sln
  • 使用的命令如下:

    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 )的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。