14.10. Prebuilding an ASP.NET Web SiteProgrammatically

Problem

You want to prebuild your web site to avoid compilation delays and to avoid the hosting scenario in which source code needs to be on the server.

Solution

Use the ClientBuildManager to prebuild your web site into an assembly. In order to prebuild the web site, you must specify:

  • The virtual directory for the web application.

  • The physical path to the web application directory.

  • The location where you want to build the web application.

  • Flags that help control the compilation.

To prebuild the web application in the sample code for the book, first retrieve the directory where the web application is located, and then provide a virtual directory name and a location for the web application to build to:

	string cscbWebPath = GetWebAppPath( );

	if(cscbWebPath.Length>0)
	{
	    string appVirtualDir = @"CSCBWeb";
	    string appPhysicalSourceDir = cscbWebPath;

	    // Make the target an adjacent directory as it cannot be in the same tree
	    // or the build manager screams...
	    string appPhysicalTargetDir = Path.GetDirectoryName(cscbWebPath) + @"\ BuildCSCB";

Next, set up the flags for the compile using the PrecompilationFlags enumeration. The PrecompilationFlags values are listed in Table 14-2.

Table 14-2. PrecompilationFlags enumeration values

Flag value

Purpose

AllowPartiallyTrustedCallers

Add the APTC attribute to the built assembly.

Clean

Remove any existing compiled image.

CodeAnalysis

Build for code analysis.

Default

Use the default compile options.

DelaySign

DelaySign ...

Get C# 3.0 Cookbook, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.