e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
62 lines
2.0 KiB
C#
62 lines
2.0 KiB
C#
//------------------------------------------------------------------------------
|
|
// <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; }
|
|
}
|
|
}
|
|
|
|
}
|