Tudjuk, hogy egy ASP.NET alkalmazást nagyon egyszerű közzétenni egy webszerveren, elég csak felmásolnunk a forrásfájlokat, a fordításról pedig az ASP.NET futtatókörnyezet automatikusan gondoskodik. Ez ugyan működik, de mint ahogy egy desktop alkalmazást sem adunk a felhasználóknak forráskód formájában, itt is szebb az olyan megoldás, ahol a szerverre már csak a lefordított DLL-ek kerülnek fel.
Az ASP.NET runtime a fordításhoz az aspnet_compiler.exe-t használja, ami a .NET Framework része. Ez gondoskodik arról, hogy a C# és VB fájljainkat a megfelelő csc.exe vagy vbc.exe fordítók dolgozzák fel. Az aspnet_compiler eredménye futtatható, de nem túl barátságos, egy rakás fájlból áll. Alapértelmezés szerint még az ASPX és ASCX fájljainkból is kipucolja a markupot, ami telepítés és üzemeltetés szempontjából barátságos, cserébe nem fogunk tudni online beleszerkeszteni a fájlokba.
Ha össze akarjuk gyúrni az egész webalkalmazásunkat egyetlen DLL-be, akkor szükségünk lesz még az aspnet_merge.exe-re is. Ez az eszköz korábban külön volt letölthető (az ASP.NET Induló Készletben is így szerepel), ma már azonban az SDK része. Képes a compiler kimenetét egyetlen fájlba összeállítani, annak fix nevet adni, verziózni, erős névvel ellátni.
Mindezt egyetlen szkriptben meg lehet írni és később 2 kattintás futtatni. Először is kellenek az eszközök elérési útjai, a bemeneti és a kimeneti mappa:
set FXDIR="C:\Windows\Microsoft.NET\Framework\v2.0.50727"
set SDKDIR="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin"
set SOURCEDIR=Web
set TARGETDIR=PrecompiledWeb
Takarítsuk ki a célkönyvtárat (erre egyébként az aspnet_compiler /f kapcsolója is képes, de biztos, ami biztos):
rd /s /q %TARGETDIR%
Jöhet a fordítás:
%FXDIR%\aspnet_compiler.exe -v / -p %SOURCEDIR% -f -fixednames %TARGETDIR%
Majd az összegyúrás:
%SDKDIR%\aspnet_merge.exe -o My.Web.dll %TARGETDIR% -a -r
A paraméterek jelentését mindenki kiderítheti, ha Visual Studio Command Promptban valamelyik eszközt a –? kapcsolóval futtatja. Akit pedig egy bolondállóbb változat érdekel, innen letöltheti a teljes szkriptet.
Aki pedig kevésbé szeret szkriptelni, annak érdemes megismerkedni a Web Deployment Project-tel vagy a nemrég megjelent Web Deployment Tool (MSDeploy) eszközzel.