public IAsyncOperation Generate(IProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result) { return(new ThreadAsyncOperation(delegate { var host = new MonoDevelopTemplatingHost(); var dnp = file.Project as DotNetProject; if (dnp == null) { var msg = "Precompiled T4 templates are only supported in .NET projects"; result.Errors.Add(new CompilerError(file.Name, -1, -1, null, msg)); monitor.Log.WriteLine(msg); return; } var provider = dnp.LanguageBinding.GetCodeDomProvider(); if (provider == null) { var msg = "Precompiled T4 templates are only supported for .NET languages with CodeDOM providers"; result.Errors.Add(new CompilerError(file.Name, -1, -1, null, msg)); monitor.Log.WriteLine(msg); return; } ; var outputFile = file.FilePath.ChangeExtension(provider.FileExtension); var encoding = System.Text.Encoding.UTF8; string langauge; string[] references; string className = provider.CreateValidIdentifier(file.FilePath.FileNameWithoutExtension); string classNamespace = GetNamespaceHint(file, outputFile); LogicalSetData("NamespaceHint", classNamespace, result.Errors); host.PreprocessTemplate(file.FilePath, className, classNamespace, outputFile, encoding, out langauge, out references); result.GeneratedFilePath = outputFile; result.Errors.AddRange(host.Errors); foreach (var err in host.Errors) { monitor.Log.WriteLine(err.ToString()); } }, result)); }
public IAsyncOperation Generate (IProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result) { return new ThreadAsyncOperation (delegate { using (var host = new MonoDevelopTemplatingHost ()) { var defaultOutputName = file.FilePath.ChangeExtension (".cs"); //cs extension for VS compat string ns = TextTemplatingFilePreprocessor.GetNamespaceHint (file, defaultOutputName); TextTemplatingFilePreprocessor.LogicalSetData ("NamespaceHint", ns, result.Errors); host.ProcessTemplate (file.FilePath, defaultOutputName); result.GeneratedFilePath = host.OutputFile; result.Errors.AddRange (host.Errors); foreach (var err in host.Errors) monitor.Log.WriteLine (err.ToString ()); } }, result); }
public IAsyncOperation Generate(IProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result) { return(new ThreadAsyncOperation(delegate { using (var host = new MonoDevelopTemplatingHost()) { var defaultOutputName = file.FilePath.ChangeExtension(".cs"); //cs extension for VS compat string ns = TextTemplatingFilePreprocessor.GetNamespaceHint(file, defaultOutputName); TextTemplatingFilePreprocessor.LogicalSetData("NamespaceHint", ns, result.Errors); host.ProcessTemplate(file.FilePath, defaultOutputName); result.GeneratedFilePath = host.OutputFile; result.Errors.AddRange(host.Errors); foreach (var err in host.Errors) { monitor.Log.WriteLine(err.ToString()); } } }, result)); }
public IAsyncOperation Generate (IProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result) { return new ThreadAsyncOperation (delegate { var host = new MonoDevelopTemplatingHost (); var dnp = file.Project as DotNetProject; if (dnp == null) { var msg = "Precompiled T4 templates are only supported in .NET projects"; result.Errors.Add (new CompilerError (file.Name, -1, -1, null, msg)); monitor.Log.WriteLine (msg); return; } var provider = dnp.LanguageBinding.GetCodeDomProvider (); if (provider == null) { var msg = "Precompiled T4 templates are only supported for .NET languages with CodeDOM providers"; result.Errors.Add (new CompilerError (file.Name, -1, -1, null, msg)); monitor.Log.WriteLine (msg); return; }; var outputFile = file.FilePath.ChangeExtension (provider.FileExtension); var encoding = System.Text.Encoding.UTF8; string langauge; string[] references; string className = provider.CreateValidIdentifier (file.FilePath.FileNameWithoutExtension); string classNamespace = GetNamespaceHint (file, outputFile); LogicalSetData ("NamespaceHint", classNamespace, result.Errors); host.PreprocessTemplate (file.FilePath, className, classNamespace, outputFile, encoding, out langauge, out references); result.GeneratedFilePath = outputFile; result.Errors.AddRange (host.Errors); foreach (var err in host.Errors) monitor.Log.WriteLine (err.ToString ()); }, result); }