相信現在大部份人寫asp.net 2.0都是用Visual Web Developer Express版本(以下簡稱VWD),
無疑這個所謂簡化版本一點都不簡化,已足夠應付大多數新手老手的要求.
但近期小弟我遇到一個問題,相信同樣是每一個asp.net作者都會遇到.
前幾天,小弟我替現職公司把一個由VS.NET 2003寫的MSSQL Database升級至ASP.NET 2.0版本, 一如以往想進行Compile並加入Reference File,那*.vb檔就不用上傳至Server, 以保密Source Code,但問題來了,Compile後,我找遍VWD預設輸出資料夾 My Document中的VS2005資料夾,都找不到Bin中應有的Assembly DLL File, 那順理成章,Google It ~
原來VWD已改變Precompilation 和Web Deployment方面的做法.....
以前我們使用VS.NET時,在Release時,VS.NET會自動把我們整個Project中的Source Code轉至一個參考物件並放在Bin資料夾中,但到了VWD後,Precompilation並不會建立DLL,原因是.NET Framework 2.0所採用的Web Depolyment已不單把*.VB整合在一個Assembly集合檔案中,而是把*.aspx都整合在一個DLL,實行全面保護Source code,而怎麼做呢?
大家可以試試打開Framework 2.0資料夾 (C:WINDOWSMicrosoft.NETFrameworkv2.0.50727),你可以找到一個Command Line的工具 - aspnet_compiler.exe , 使用這個工具,你便可以把你整個Project中的aspx,ascx,vb或其他檔案統統整合至若干DLL中,使用方法是:
aspnet_compiler -v -p
而Precompile後,發現所有*.vb,*.ascx等文件不見了, 而Output資料夾打開aspx文件,所有HTML會不見,只會出現一句Plain Text "This is a marker file generated by the precompilation tool, and should not be deleted!" .
若你不想使用Command Line的話,可以試試以下兩個Front-End程式,把aspnet_compiler GUI化.
West Wind ASP.NET 2.0 Compiler Utility
http://www.west-wind.com/tools/aspnetcompiler.asp
當然會有人和我一樣依舊喜歡VS.NET般做法,如果你是使用Visual Studio 2005而不是Express版本的話,你便會發現在Menu中的Deploy底下會多一項"Deploy Website"的項目,這個就正是VS.NET中的做法,把*.vb Compile至Assembly File.同樣地可以在Bin資料夾中找到, 相信這個就是VWD Express其中一項被簡化的項目.
或者你會問,VWD Express可以用到嗎? 其實是可以的,但我們需要使用一個Add-on :
Visual Studio 2005 Web Application Projects (Beta V2 Preview)
http://msdn.microsoft.com/asp.net/reference/infrastructure/wap/default.aspx
使用這個工具,我們可以在同樣地建立一個Assembly File.