/// <summary> /// Generates source code for the virtual path of the build provider, and adds the source code to a specified assembly builder. /// </summary> /// <param name="assemblyBuilder">The assembly builder that references the source code generated by the build provider.</param> public override void GenerateCode(AssemblyBuilder assemblyBuilder) { using (DalGenerator gen = new DalGenerator(this.VirtualPath, true)) { assemblyBuilder.AddCodeCompileUnit(this, gen.Generate()); //CodeHelper.BuildCodeTreeFromMapFile(this.VirtualPath, true)); } }
/// <summary> /// When overridden in a derived class, executes the task. /// </summary> /// <returns> /// true if the task successfully executed; otherwise, false. /// </returns> public override bool Execute() { if (_outDir == null) { _outDir = Path.GetDirectoryName(_fileName); } if (!_outDir.EndsWith("\\")) { _outDir += "\\"; } Log.LogMessage("Generating DAL for " + Language + " file:" + FileName); string inputFileContent; /// /// Read the file contents /// if (File.Exists(this.FileName)) { using (StreamReader reader = new StreamReader(FileName)) { inputFileContent = reader.ReadToEnd(); } /// /// Build a CodeDOM tree of the file to return /// CodeCompileUnit unit;// = CodeHelper.BuildCodeTreeFromMapFile(inputFileContent); using (DalGenerator dalGen = new DalGenerator(inputFileContent)) { unit = dalGen.Generate(); } // Code provider CodeDomProvider provider = CodeDomProvider.CreateProvider(_language); CodeGeneratorOptions options = new CodeGeneratorOptions(); options.BlankLinesBetweenMembers = true; options.BracingStyle = "Block"; options.ElseOnClosing = true; options.IndentString = " "; options.VerbatimOrder = false; //return true; string path; CodeCompileUnit code; CodeNamespace ns; foreach (CodeTypeDeclaration type in unit.Namespaces[0].Types) { path = string.Format("{0}{1}.{2}", _outDir, type.Name, provider.FileExtension); code = new CodeCompileUnit(); ns = new CodeNamespace(unit.Namespaces[0].Name); foreach (CodeNamespaceImport import in unit.Namespaces[0].Imports) { ns.Imports.Add(import); } code.Namespaces.Add(ns); ns.Types.Add(type); using (StreamWriter writer = new StreamWriter(path)) { provider.GenerateCodeFromCompileUnit(code, writer, options); } } } // Success return(true); }