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:WindowsMicrosoft.NETFrameworkv2.0.50727" set SDKDIR="C:Program FilesMicrosoft SDKsWindowsv6.0ABin" 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.