先行編譯 aspnet_compiler 和編譯整合 aspnet_merge

來源:互聯網
上載者:User

asp.net1.1時,web項目可以編譯成一個dll,然後發布該dll和aspx、ascx頁面即可。到了asp.net2.0裡,web項目的編譯則稍有不同。

 

首先,vs2005裡有兩種類型的web程式:web site和web project。

 

Web project和原來vs2003裡差不多,可以編譯成一個dll,但是需要安裝一個sp1之後才會有這種類型出現:建立一個project,選擇web..。

這種project產生之後會出現一個.csproj的專案檔;

Vs中看到的項目目錄是xx項目。這種項目可以轉化成下邊的那一種。

 

而如果安裝了vs2005之後預設的web類型就是web site,這種類型的只是一個檔案夾而已,裡面沒有.csproj檔案,vs中看到的是一個目錄d:\xx\xxx。

這種項目的編譯和發布就和vs2003時有些不同了,它可以使用先行編譯。

 

先行編譯可以把項目編譯成一些dll,這些dll的名字隨機。諸如“App_Web_4psgfks”之類的一對檔案,編譯之後還是再bin目錄下。在這種情況下如何編譯成一個dll,似乎有一個aspnet_merger的dll可以用。

 

 

而aspx頁面的編譯結果也有多種。

1: 如果選擇不可以更新,那麼編譯之後的aspx頁面就成了一個markup的頁面,裡面內容全空,只留下這樣一個字串:This is a marker file generated by the precompilation tool, and should not be deleted!。於此同時bin裡產生一個對應的complied檔案,裡面寫明類的映射。

2: 如果選擇可以更新,那邊編譯之後的aspx頁面保留內容,但是該頁面的第一列則會被改變成這樣:inherits="xx.xxxx, App_Web_4psgfks-"。這表明該後台類在哪一個dll中。

 

 

而如果是在vs2005之外,則可以直接調用aspnet_complier.exe完成上述先行編譯功能。該exe位於C:\Windows\Microsoft.NET\Framework\v2.xxxxx\aspnet_compiler.exe。

 

舉例:

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_compiler -v 項目名稱 –p  項目目錄 目標目錄 –u

其中-u就是表示是否可以aspx頁面更新的選項。

 

具體使用參數可以在cmd之後輸入aspnet_compile -?。

============================================

=================================================
這是代碼,可以用來編譯和整合dll的:
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe" -f -u -p "D:\MyProgram\WebSite\xxx" -v / "D:\MyProgram\Win\xxxx"
"C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\aspnet_merge.exe" "D:\MyProgram\Win\xxxx" -o xxxx.dll 

======================
正常情況下,vs2005並沒有aspnet_merge.exe,需要安裝這個才可以:WebDeploymentSetup.msi。
vs2008下就已經有了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.