예제 #1
0
        public static void Gen(string srcDirectory, string destDirectory)
        {
            try
            {
                string[] files = Directory.GetFiles(srcDirectory, "*.proto");
                if (files.Length == 0)
                {
                    Logger.Error("当前目录下没有找到协议文件: {0}", srcDirectory);
                }
                else
                {
                    IList <StructContainer> structs = StructParser.Process(files);

                    // 生成脚本
                    GenerateCode oGenCode = new GenerateCode();
                    using (FileStream fs = new FileStream(destDirectory + "/Packets.cs", FileMode.Create, FileAccess.Write))
                    {
                        string strScript = oGenCode.Gen(structs);
                        byte[] bytes     = Encoding.UTF8.GetBytes(strScript);
                        fs.Write(bytes, 0, bytes.Length);
                    }
                    Logger.Info("代码生成地址:" + destDirectory + "/Packets.cs");
                }
            }
            catch (Exception e)
            {
                Logger.Error(e.Message + "\n" + e.StackTrace);
            }
        }
예제 #2
0
        public static void Gen(string srcDirectory, string destDirectory)
        {
            Logger.Info("配置表示例:");
            Logger.Info("---------------------------");
            Logger.Info("| int | string |  string  |");
            Logger.Info("---------------------------");
            Logger.Info("| TID |  name  | describe |");
            Logger.Info("---------------------------");
            Logger.Info("| TID |  名称  |   描述   |");
            Logger.Info("---------------------------");
            Logger.Explain("注意:一行一列TID;第一行字段类型;第二行字段名称;第三行字段注释; 描述文件命名为(前缀):\"_Define_\"", ConsoleColor.Green);
            Logger.Info("输入目录:" + srcDirectory);
            Logger.Info("输出目录:" + destDirectory);
            Logger.Info("****************************数据表处理开始****************************");
            try
            {
                List <string> files    = new List <string>();
                string[]      allFiles = Directory.GetFiles(srcDirectory, "*.xlsx");
                foreach (var file in allFiles)
                {
                    string fileName = Path.GetFileNameWithoutExtension(file);
                    if (!fileName.Contains("_Define_") && !fileName.Contains("~$"))
                    {
                        files.Add(file);
                    }
                }

                if (files.Count == 0)
                {
                    Logger.Error("当前目录下没有找到配置文件: {0}", srcDirectory);
                }
                else
                {
                    ProcessExcel processExcel = new ProcessExcel();
                    bool         isSucess     = processExcel.Parse(files.ToArray());
                    isSucess = isSucess & processExcel.Check();
                    if (!isSucess)
                    {
                        Logger.Error("配置表处理出现异常,无法继续生成数据和脚本!");
                    }
                    else
                    {
                        // 生成数据
                        GenerateData oGenData = new GenerateData();
                        using (FileStream fs = new FileStream(destDirectory + "/Template.dat", FileMode.Create, FileAccess.Write))
                        {
                            byte[] bytes = oGenData.Gen(processExcel.DataTables);
                            fs.Write(bytes, 0, bytes.Length);
                        }

                        // 生成脚本
                        GenerateCode oGenCode = new GenerateCode();
                        using (FileStream fs = new FileStream(destDirectory + "/Template.cs", FileMode.Create, FileAccess.Write))
                        {
                            string strScript = oGenCode.Gen(processExcel.DataTables);
                            byte[] bytes     = Encoding.UTF8.GetBytes(strScript);
                            fs.Write(bytes, 0, bytes.Length);
                        }
                        Logger.Info("代码生成地址:" + destDirectory + "/Template.cs");
                        Logger.Info("数据生成地址:" + destDirectory + "/Template.dat");
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e.Message + "\n" + e.StackTrace);
            }

            Logger.Info("****************************数据表处理结束****************************");
        }