public static string GetProjectLangStr(cfLangType lt) { string i = ""; switch (lt) { case cfLangType.CSharp: i = "CSharp"; break; case cfLangType.VBDotNet: i = "VisualBasic"; break; case cfLangType.IronPython: i = "IronPython"; break; case cfLangType.FSharp: i = "FSharp"; break; default: i = "CSharp"; break; } return(i); }
public static string GetProjectLangStr2(cfLangType lt) { string i = ""; switch (lt) { case cfLangType.CSharp: i = "C#"; break; case cfLangType.VBDotNet: i = "VBNET"; break; case cfLangType.IronPython: i = "Python"; break; case cfLangType.FSharp: i = "F#"; break; default: i = null; break; } return(i); }
public static string GetProjectConfigNamespec(cfLangType lt) { string i = ""; switch (lt) { case cfLangType.CSharp: i = ".Properties.Settings"; break; case cfLangType.VBDotNet: i = ".My.MySettings"; break; case cfLangType.IronPython: i = ".Properties.Settings"; break; case cfLangType.FSharp: i = ".Properties.Settings"; break; default: i = ".Properties.Settings"; break; } return(i); }
public static string GetProjectLaneExt(cfLangType lt) { string i = ""; switch (lt) { case cfLangType.CSharp: i = ".cs"; break; case cfLangType.VBDotNet: i = ".vb"; break; case cfLangType.IronPython: i = ".py"; break; case cfLangType.FSharp: i = ".fs"; break; case cfLangType.CPP: i = ".cpp;.h;.c"; break; default: i = ".cs"; break; } return(i); }
public static bool GeneratedCode(string sql, EnvDTE.Project pjt, string classname) { bool ok = Kit.CheckDataBase(); if (ok) { DBOperator <Keel.DB.Common> obc = new DBOperator <Keel.DB.Common>(); DataTable dt = obc.ExecuteFillDataTable(sql); ok = false; if (classname == null || classname == "") { classname = dt.TableName; } if (classname != null && classname != "") { ViewGenerator mg = new ViewGenerator((string)pjt.Properties.Item("RootNamespace").Value, classname, sql); for (int i = 0; i < dt.Columns.Count; i++) { DataColumn dc = dt.Columns[i]; mg.AddProperty(dc.ColumnName, dc.DataType, null); } cfLangType cl = Kit.GetProjectLangType(pjt); string filename = mg.Save(pjt.FileName, cl); pjt.ProjectItems.AddFromFile(filename); ok = true; } } return(ok); }
/// <summary> /// 根据项目全名的扩展名语言类型 /// </summary> /// <param name="pjt">项目名称</param> /// <returns>返回项目类型</returns> public static cfLangType GetProjectLangType(EnvDTE.Project pjt) { cfLangType cl = cfLangType.CSharp; string ext = (new FileInfo(pjt.FullName)).Extension.ToLower(); switch (ext) { case "": string s = null; try { s = pjt.Properties.Item("CurrentWebsiteLanguage").Value.ToString(); } catch (Exception) { } switch (s) { case "Visual C#": cl = cfLangType.CSharp; break; case "Visual Basic": cl = cfLangType.VBDotNet; break; default: break; } break; case ".vcproj": cl = cfLangType.CPP; break; case ".vbproj": cl = cfLangType.VBDotNet; break; case ".pyproj": cl = cfLangType.IronPython; break; case ".fsproj": cl = cfLangType.FSharp; break; case ".csproj": default: cl = cfLangType.CSharp; break; } return(cl); }
public string Save(string path, cfLangType clt, KeelKit.Generators.BaseGengerator.DGetFileNames getfilename) { string result = null; CodeDomProvider provider = BaseGengerator.GetProvider(clt); if (provider != null) { string filename = getfilename(path, provider.FileExtension); IndentedTextWriter tw = new IndentedTextWriter(new StreamWriter(filename, false, Encoding.UTF8), " "); provider.GenerateCodeFromCompileUnit(ccu, tw, new CodeGeneratorOptions()); tw.Close(); result = filename; } return(result); }
public static void GeneratedCode(KeelExt.ModelKind mk) { Common.ShowInfo("正在检查数据库是否可用!"); if (Kit.CheckDataBase()) { Common.ShowInfo("正在从数据库中读取表信息..."); EnvDTE.Project pjt = Kit.GetProjectModel(); List <SQLTableInfo> dbix = GetSqlTableInfoList(); string[] lsttab = (Kit.SlnKeel.DataTables + Kit.SlnKeel.DataViews).Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); string keelcpp = null; foreach (var item in lsttab) { #region 生成一个model tablenamenow = item; Common.ShowInfo(string.Format("正在生成{0}的实体,请稍候...", tablenamenow)); Predicate <SQLTableInfo> pdbi = new Predicate <SQLTableInfo>(FindByTableName); List <SQLTableInfo> lstdb = dbix.FindAll(pdbi); ModelGengerator mg = new ModelGengerator(Kit.GetRootNamespace(pjt), item); if (mk == KeelExt.ModelKind.DotNetAndC) { mg.AddStruct(tablenamenow); mg.AddFunForStructModel(); } foreach (var tableitem in lstdb) { mg.AddProperty(tableitem, mk); mg.AddTableNameConst(tableitem.t_fieldname, tableitem.t_tabledesc); } mg.AddCtor(lstdb, mk); cfLangType cl = Kit.GetProjectLangType(pjt); string filename = mg.Save(pjt.FullName, cl); AddFileToProject(pjt, filename); if (cl == cfLangType.CPP) { keelcpp += string.Format("#include \"{0}\"", new System.IO.FileInfo(filename).Name) + Environment.NewLine; } Common.ShowInfo(string.Format("恭喜!{0}的实体保存完毕!", tablenamenow)); #endregion } ForCpptoDo(pjt, keelcpp); Common.ShowInfo(string.Format("全部实体生成完毕,开始生产DBContext")); GenDAL(lsttab); Common.ShowInfo(string.Format("KeelKit所需生成的内容生成完毕!")); } }
public string Save(string path, cfLangType clt, DGetFileNames getfilename) { CodeDomProvider provider = GetProvider(clt); string filename = getfilename != null?getfilename(path, provider.FileExtension) : GetFileNames(path, provider.FileExtension); IndentedTextWriter tw = new IndentedTextWriter(new StreamWriter(filename, false, Encoding.UTF8), " "); provider.GenerateCodeFromCompileUnit(ccu, tw, new CodeGeneratorOptions()); tw.Close(); string context = System.IO.File.ReadAllText(filename, Encoding.UTF8); if (!context.Contains("<auto-generated>") && ccu.Namespaces.Count > 0) { ccu.Namespaces[0].Comments.Clear(); ccu.Namespaces[0].Comments.Add(new CodeCommentStatement(AddKeelKitInfo())); tw = new IndentedTextWriter(new StreamWriter(filename, false, Encoding.UTF8), " "); provider.GenerateCodeFromCompileUnit(ccu, tw, new CodeGeneratorOptions()); tw.Close(); } return(filename); }
public static bool GeneratedCode(EnvDTE.Project pjt, string classname) { bool ok = Kit.CheckDataBase(); if (ok) { DBHelper <SPInfos> dbspi = new DBHelper <SPInfos>(); List <SPInfos> lspi = dbspi.GetDataViewForObjectList(); ok = false; if (classname == null || classname == "") { classname = "DALSP"; } string[] dttmp = Kit.SlnKeel.DataSP.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); SPGengerator mg = new SPGengerator(Kit.GetRootNamespace(pjt), classname); List <KeelKit.Generators.SQLTableName> stb = Generators.SPGengerator.GetSPNameList(); foreach (var item in dttmp) { Predicate <SPInfos> pdbi = new Predicate <SPInfos>(FindByTableName); spnamenow = item; List <SPInfos> lstdb = lspi.FindAll(pdbi); try { mg.AddMethod(lstdb, item); } catch (Exception) { } } cfLangType cl = Kit.GetProjectLangType(pjt); string filename = mg.Save(Path.GetDirectoryName(pjt.FullName) + "\\" + classname, cl, new DGetFileNames(GetFileNames)); pjt.ProjectItems.AddFromFile(filename); ok = true; } return(ok); }
public string Save(string path, cfLangType clt) { return(Save(path, clt, new DGetFileNames(GetFileNames))); }
public static CodeDomProvider GetProvider(cfLangType clt) { CodeDomProvider provider = null; #region 生成序列化代码 //LangCodeProvider lcp = new LangCodeProvider(); //System.Reflection.Assembly asm = System.Reflection.Assembly.Load("CppCodeProvider, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");//"Microsoft.VisualC.VSCodeProvider, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); //provider = asm.CreateInstance("Microsoft.VisualC.CppCodeProvider7") as CodeDomProvider; //lcp.CPP =new ProviderInfo(typeof( Microsoft.VisualC.VSCodeProvider).Assembly.FullName ,null ,"Microsoft.VisualC.VSCodeProvider"); //lcp.CSharp = new ProviderInfo(typeof(Microsoft.CSharp.CSharpCodeProvider).Assembly.FullName ,null ,"Microsoft.CSharp.CSharpCodeProvider"); //lcp.FSharp = new ProviderInfo(typeof (Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider).Assembly.FullName ,typeof (Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider).Assembly.Location ,"Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider"); //lcp.IronPython = new ProviderInfo(typeof(IronPython.CodeDom.PythonProvider).Assembly.FullName, typeof(IronPython.CodeDom.PythonProvider).Assembly.Location, "IronPython.CodeDom.PythonProvider"); //lcp.VBDotNet = new ProviderInfo(typeof(Microsoft.VisualBasic.VBCodeProvider).Assembly.FullName, null , "Microsoft.VisualBasic.VBCodeProvider"); //System.IO.File.WriteAllBytes("c:\\ddd.xml", XMLRW<LangCodeProvider>.Write(lcp)); #endregion string name = Enum.GetName(typeof(cfLangType), clt); ProviderInfo pi = typeof(LangCodeProvider).InvokeMember(name, System.Reflection.BindingFlags.GetProperty, null, Kit.GetCodeProviderRouter(), new object[] { }) as ProviderInfo; if (pi == null) { pi = typeof(LangCodeProvider).InvokeMember(name, System.Reflection.BindingFlags.GetProperty, null, Kit.GetDefaultCodeProviderRouter(), new object[] { }) as ProviderInfo; } System.Reflection.Assembly asm = null; if (pi.Location != null) { if (asm == null) { try { asm = System.Reflection.Assembly.Load(pi.AsmFullName); } catch (Exception) { asm = null; } } if (System.IO.File.Exists(pi.Location)) { try { asm = System.Reflection.Assembly.LoadFile(pi.Location); } catch (Exception ex) { asm = null; } } if (asm == null) { string f = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\" + pi.Location; if (System.IO.File.Exists(f)) { try { asm = System.Reflection.Assembly.LoadFile(f); } catch (Exception ex) { Common.ShowInfo("装载" + f + "失败:" + ex.Message); } } } } if (asm != null) { try { provider = asm.CreateInstance(pi.TypeName) as CodeDomProvider; } catch (Exception ex) { Common.ShowInfo("类型" + pi.TypeName + "创建失败:" + ex.Message); } } #region 旧代码 //switch (clt) //{ // default: // case cfLangType.CSharp: // provider = new CSharpCodeProvider() ; // break; // case cfLangType.CPP: // provider = new Microsoft.VisualC.VSCodeProvider() ; // break; // case cfLangType.VBDotNet: // provider = new VBCodeProvider(); // break; // case cfLangType.IronPython: // provider = new IronPython.CodeDom.PythonProvider(); // break; // case cfLangType.FSharp: // provider = new Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider(); // break; //} #endregion return(provider); }
public string Save(string path, cfLangType clt) { return(Save(path, clt, new KeelKit.Generators.BaseGengerator.DGetFileNames(GetFileNames))); }