protected override TemplatesCompilationResult OnCompile ()
{
TemplatesCompilationResult result = new TemplatesCompilationResult ();
foreach (var source in this.Sources)
{
using (StreamReader reader = new StreamReader (source.SourceStream))
{
InternalCSharpTemplateCompiler compiler = new InternalCSharpTemplateCompiler (reader, ns,source.ReferenceFilePath);
compiler.generate ();
generatedResourcesClassNames.Add(new GeneratedResourceClass
{
ClassName =
compiler.className,
DiscoveryPath = source.DiscoveryPath
});
}
}
generateDiscoveryClass();
#if DEBUG
using (FileStream fs = new FileStream ("/home/thepumpkin/template.cs", FileMode.Create, FileAccess.Write)) {
using (StreamWriter writer = new StreamWriter (fs)) {
csharp.GenerateCodeFromCompileUnit (this.codeCompilerUnit, writer, null);
}
}
#endif
string[] assemblies = new string[] { "BlackLinks" };
CompilerParameters prms = new CompilerParameters (assemblies);
if (!string.IsNullOrEmpty (this.OutputAssemblyPath)) {
prms.OutputAssembly = this.OutputAssemblyPath;
}
CompilerResults results = this.csharp.CompileAssemblyFromDom (prms, new CodeCompileUnit[] { this.codeCompilerUnit });
Console.WriteLine ("Errors Count= {0}", results.Errors.Count);
if(results.CompiledAssembly != null)
{
result.Assemblies.Add(results.CompiledAssembly);
}
#if DEBUG
foreach (CompilerError error in results.Errors) {
Console.Error.WriteLine ("\t{0} at file {1}#{2}", error.ErrorText, error.FileName, error.Line);
result.CompilationErrors.Add(error);
}
#endif
return result;
}