Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 8
0
        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所需生成的内容生成完毕!"));
            }
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
 public string Save(string path, cfLangType clt)
 {
     return(Save(path, clt, new DGetFileNames(GetFileNames)));
 }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 public string Save(string path, cfLangType clt)
 {
     return(Save(path, clt, new KeelKit.Generators.BaseGengerator.DGetFileNames(GetFileNames)));
 }