1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
//------------------------------------------------------------------------------
// <copyright file="SourceFileBuildProvider.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Compilation {
using System;
using System.IO;
using System.Collections;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Web.Hosting;
using System.Web.Util;
using System.Web.UI;
internal sealed class SourceFileBuildProvider: InternalBuildProvider {
private CodeSnippetCompileUnit _snippetCompileUnit;
private BuildProvider _owningBuildProvider;
public override CompilerType CodeCompilerType {
get {
return CompilationUtil.GetCompilerInfoFromVirtualPath(VirtualPathObject);
}
}
private void EnsureCodeCompileUnit() {
if (_snippetCompileUnit == null) {
// Read the contents of the file
string sourceString = Util.StringFromVirtualPath(VirtualPathObject);
_snippetCompileUnit = new CodeSnippetCompileUnit(sourceString);
_snippetCompileUnit.LinePragma = BaseCodeDomTreeGenerator.CreateCodeLinePragmaHelper(
VirtualPath, 1);
}
}
public override void GenerateCode(AssemblyBuilder assemblyBuilder) {
EnsureCodeCompileUnit();
assemblyBuilder.AddCodeCompileUnit(this, _snippetCompileUnit);
}
protected internal override CodeCompileUnit GetCodeCompileUnit(out IDictionary linePragmasTable) {
EnsureCodeCompileUnit();
linePragmasTable = new Hashtable();
linePragmasTable[1] = _snippetCompileUnit.LinePragma;
return _snippetCompileUnit;
}
// The owning build provider in case this course file is a partial compile-with code besides
internal BuildProvider OwningBuildProvider {
get { return _owningBuildProvider; }
set { _owningBuildProvider = value; }
}
}
}
|