async Task CompileCode(EngineNS.EPlatformType platform, bool usecache = false)
        {
            if (!Particle_Client.CheckError())
            {
                return;
            }

            CurrentResourceInfo.Version++;

            List <Macross.ResourceInfos.MacrossResourceInfo.CustomFunctionData> functions = new List <Macross.ResourceInfos.MacrossResourceInfo.CustomFunctionData>();

            Particle_Client.CollectFuncDatas(functions);

            //if (CheckCompileResult(await CompileCode(Macross_Client, platform, functions), platform) == false)
            //    return;
            //if (CheckCompileResult(await CompileMacrossCollector(Macross_Client, platform), platform) == false)
            //    return;
            if (await CompileCode(Particle_Client, ECSType.Client, usecache))
            {
                CompileStatusIcon = TryFindResource("Good") as ImageSource;
            }
            else
            {
                CompileStatusIcon = TryFindResource("Fail") as ImageSource;
                EditorCommon.MessageBox.Show($"{platform}平台MacrossScript编译失败!详细信息请编译游戏工程!\r\n");
                return;
            }

            if (platform == EngineNS.EPlatformType.PLATFORM_WIN)
            {
                //var scriptDllName = EngineNS.CEngine.Instance.FileManager.Bin + "MacrossScript.dll";
                //EngineNS.CEngine.Instance.MacrossDataManager.RefreshMacrossCollector();
                //var assembly = EngineNS.CEngine.Instance.MacrossDataManager.MacrossScripAssembly;//EngineNS.Rtti.RttiHelper.GetAssemblyFromDllFileName(EngineNS.CIPlatform.Instance.CSType, scriptDllName, "", true, true);
                //var clsTypeFullName = Macross.Program.GetClassNamespace(CurrentResourceInfo, ECSType.Client) + "." + Macross.Program.GetClassName(CurrentResourceInfo, ECSType.Client);
                //var clsType = assembly.GetType(clsTypeFullName);
                //var clsIdPro = clsType.GetProperty("ClassId");
                //var classId = (EngineNS.Hash64)clsIdPro.GetValue(null);
                //EngineNS.CEngine.Instance.MacrossDataManager.RefreshMacrossData(ref classId, clsType);
                EngineNS.Macross.MacrossFactory.SetVersion(CurrentResourceInfo.ResourceName, CurrentResourceInfo.Version);
            }

            Particle_Client.PG.Instance = null;

            string pfxcs = CurrentResourceInfo.AbsInfoFileName.Replace(".rinfo", "");

            EngineNS.RName pfxname = EngineNS.RName.GetRName(pfxcs.Replace(CEngine.Instance.FileManager.ProjectContent, ""));
            await Particle_Client.AddPfxMacross(pfxname);
        }
        //bool CheckCompileResult(System.CodeDom.Compiler.CompilerResults result, EngineNS.EPlatformType platform)
        //{
        //    if (result.Errors.HasErrors)
        //    {
        //        CompileStatusIcon = TryFindResource("Fail") as ImageSource;
        //        var errorStr = "";
        //        foreach (var error in result.Errors)
        //        {
        //            errorStr += error.ToString() + "\r\n";
        //        }
        //        EditorCommon.MessageBox.Show($"{platform}平台MacrossScript编译失败!\r\n" + errorStr);
        //        return false;
        //    }
        //    else if (result.Errors.HasWarnings)
        //    {
        //        CompileStatusIcon = TryFindResource("Warning") as ImageSource;
        //        return false;
        //    }
        //    else
        //    {
        //        CompileStatusIcon = TryFindResource("Good") as ImageSource;
        //        return true;
        //    }
        //}
        async Task CompileCode(EngineNS.EPlatformType platform)
        {
            if (CurrentResourceInfo.NotGenerateCode)
            {
                return;
            }

            if (!Macross_Client.CheckError())
            {
                return;
            }

            CurrentResourceInfo.Version++;

            List <ResourceInfos.MacrossResourceInfo.CustomFunctionData> functions = new List <ResourceInfos.MacrossResourceInfo.CustomFunctionData>();

            Macross_Client.CollectFuncDatas(functions);

            //if (CheckCompileResult(await CompileCode(Macross_Client, platform, functions), platform) == false)
            //    return;
            //if (CheckCompileResult(await CompileMacrossCollector(Macross_Client, platform), platform) == false)
            //    return;
            if (await CompileCode(Macross_Client, ECSType.Client))
            {
                CompileStatusIcon = TryFindResource("Good") as ImageSource;
            }
            else
            {
                CompileStatusIcon = TryFindResource("Fail") as ImageSource;
                EditorCommon.MessageBox.Show($"{platform}平台MacrossScript编译失败!详细信息请编译游戏工程!\r\n");
                return;
            }

            if (platform == EngineNS.EPlatformType.PLATFORM_WIN)
            {
                //var scriptDllName = EngineNS.CEngine.Instance.FileManager.Bin + "MacrossScript.dll";
                //EngineNS.CEngine.Instance.MacrossDataManager.RefreshMacrossCollector();
                var assembly = EngineNS.CEngine.Instance.MacrossDataManager.MacrossScripAssembly;//EngineNS.Rtti.RttiHelper.GetAssemblyFromDllFileName(EngineNS.CIPlatform.Instance.CSType, scriptDllName, "", true, true);
                var clsType  = assembly.GetType(Program.GetClassNamespace(CurrentResourceInfo, ECSType.Client) + "." + Program.GetClassName(CurrentResourceInfo, ECSType.Client));
                EngineNS.Macross.MacrossFactory.SetVersion(CurrentResourceInfo.ResourceName, CurrentResourceInfo.Version);
            }

            Macross_Client.PG.Instance = null;
            Macross_Server.PG.Instance = null;
        }
 bool CheckCompileResult(System.CodeDom.Compiler.CompilerResults result, EngineNS.EPlatformType platform)
 {
     if (result.Errors.HasErrors)
     {
         CompileStatusIcon = TryFindResource("Fail") as ImageSource;
         var errorStr = "";
         foreach (var error in result.Errors)
         {
             errorStr += error.ToString() + "\r\n";
         }
         EditorCommon.MessageBox.Show($"{platform}平台MacrossScript编译失败!\r\n" + errorStr);
         return(false);
     }
     else if (result.Errors.HasWarnings)
     {
         CompileStatusIcon = TryFindResource("Warning") as ImageSource;
         return(false);
     }
     else
     {
         CompileStatusIcon = TryFindResource("Good") as ImageSource;
         return(true);
     }
 }