public static void GUnit() { // XSD wrapper demo XsdWrapperGenerator xsg = new XsdWrapperGenerator("GUnit.Core.Reports.Serialization"); foreach(Type t in Assembly.GetExecutingAssembly().GetExportedTypes()) { if (t.Namespace!= "GUnit.Core.Reports.Xsd") continue; xsg.Add(t); } xsg.Generate(); // getting generator CodeGenerator gen = new CodeGenerator(); gen.GenerateCode("..\\..",xsg.Ns); }
public static void NCover() { // XSD wrapper demo XsdWrapperGenerator xsg = new XsdWrapperGenerator("NCover"); foreach(Type t in Assembly.GetExecutingAssembly().GetExportedTypes()) { if (t.Namespace!= "NCover") continue; xsg.Add(t); } // xsg.Ns.Conformer.AddWord("seqpnt"); xsg.Generate(); // getting generator CodeGenerator gen = new CodeGenerator(); gen.GenerateCode("..\\..",xsg.Ns); }
private void Generate() { // check data... SetStatusBar("Checking data"); Application.DoEvents(); this.config.CheckData(); // Build Xsd path & file name and take care of instances where // '\' is missing from path and where path is empty. System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append (this.config.XsdExePath.TrimEnd('\\')); if (sb.Length > 0) sb.Append(@"\"); sb.Append("xsd.exe"); // call xsd.exe ProcessStartInfo info = new ProcessStartInfo(sb.ToString()); Application.DoEvents(); info.UseShellExecute = false; info.Arguments = String.Format( "\"{0}\" /c /n:{1}", this.config.XsdFile, this.config.OutputNamespace ); SetStatusBar("Launching Xsd.exe"); Application.DoEvents(); Process process = Process.Start(info); process.WaitForExit(); if (process.ExitCode != 0) throw new Exception("Xsd.exe failed"); // load and compile generated file string[] namePieces = this.config.XsdFile.Split('.','/','\\'); string fileName = (namePieces[namePieces.Length-2] + ".cs").ToLower(); if (!File.Exists(fileName)) throw new Exception("File " +fileName + " does not exist"); // compile CSharpCodeProvider provider = new CSharpCodeProvider(); // Obtain an ICodeGenerator from a CodeDomProvider class. ICodeCompiler comp = provider.CreateCompiler(); CompilerParameters options = new CompilerParameters(); options.GenerateInMemory = true; options.IncludeDebugInformation = true; options.ReferencedAssemblies.Add("System.dll"); options.ReferencedAssemblies.Add("System.Xml.dll"); SetStatusBar("Compiling result"); CompilerResults result = comp.CompileAssemblyFromFile(options,fileName); if (result.Errors.HasErrors) { StringWriter sw =new StringWriter(); foreach(CompilerError error in result.Errors) { sw.WriteLine(error.ToString()); } throw new Exception(sw.ToString()); } SetStatusBar("Recfactoring output"); XsdWrapperGenerator xsg = new XsdWrapperGenerator(this.config.OutputNamespace); xsg.Conformer.Camelize = this.config.AutoCamelize; xsg.Conformer.Capitalize = this.config.AutoCapitalize; foreach(Type t in result.CompiledAssembly.GetExportedTypes()) { xsg.Add(t); } xsg.Generate(); // getting generator Refly.CodeDom.CodeGenerator gen = new Refly.CodeDom.CodeGenerator(); SetStatusBar("Generating refactored classes"); gen.CreateFolders=this.config.CreateNamespaceFolders; gen.GenerateCode(this.config.OutputPath,xsg.Ns); SetStatusBar("Generation finished successfully"); }