ASP.NET Tutorial/Development/BuildProvider
BuildProvider must be compiled into a different assembly than the other code in the App_Code folder
<source lang="csharp">
You must add a BuildProvider to a separate subfolder because a BuildProvider must be compiled into a different assembly than the other code in the App_Code folder. Define the CustomBuildProviders folder and registers the SimpleBuildProvider. Whenever you add a file with the .simple extension to the App_Code folder, the SimpleBuildProvider automatically compiles a new class based on the file. File: Web.Config <configuration>
<system.web> <compilation> <codeSubDirectories> <add directoryName="CustomBuildProviders"/> </codeSubDirectories> <buildProviders> <add extension=".simple" type="MyNamespace.SimpleBuildProvider" /> </buildProviders> </compilation> </system.web>
</configuration></source>
Creating a Custom BuildProvider
<source lang="csharp">
ASP.NET page gets compiled dynamically into a .NET class in the background by a BuildProvider. Whenever you create a file that has the extension .simple, the SimpleBuilderProvider builds a new class with the same name as the file in the background. File: App_Code\SimpleBuildProvider.cs using System; using System.Web.rupilation; using System.CodeDom; using System.IO; namespace MyNamespace {
public class SimpleBuildProvider : BuildProvider { public override void GenerateCode(AssemblyBuilder ab) { string fileName = Path.GetFileNameWithoutExtension(this.VirtualPath); string snippet = "public class " + fileName + @"{ public static void DoSomething(){} }"; ab.AddCodeCompileUnit(this, new CodeSnippetCompileUnit(snippet)); } }
}</source>