//替换一个类...
        static async Task replaceTypeMemberID(CRenameTokenHandler handle, string FilePath, TypeDeclaration_t tdt, bool useInclude)
        {
            for (int k = 0; k < tdt.Members.Count; ++k)
            {
                MemberDeclaration_t md = tdt.Members[k];
                //替换并保存
                if (md.pType != null)
                {
                    await replaceTypeMemberID(handle, FilePath, md.pType, useInclude);

                    return;
                }

                await handle.beginReplace(tdt, md, FilePath);
                await SolutionAsync(handle, useInclude);

                //if (limit++ > 1)
                //    return;
            }

            {
                await handle.beginReplace(tdt, null, FilePath);
                await SolutionAsync(handle, useInclude);

                //if (limit++ > 1)
                //    return;
            }
        }
        //替换SolutionTypeMember
        public static async Task replaceAllSolutionTypeMemberID(CRenameTokenHandler rhandle, bool useInclude)
        {
            int limit = 0;

            CCLog.Info(string.Format("=== replaceAllSolutionTypeMemberID Count: {0} ", rhandle.m_solu.doctypelist.Count));

            int    StartSign = 0;
            string StartDoc  = "ACTAnimConfig.cs";
            string StartType = "ACTAnimConfig";

            int types = 0;

            rhandle.pass_cmd = 1;
            for (int i = 0; i < rhandle.m_solu.doctypelist.Count; ++i)
            {
                DocTypeList_t dtt = rhandle.m_solu.doctypelist[i];
                if (StartSign == 1 && StartDoc != dtt.Name)
                {
                    continue;
                }
                for (int j = 0; j < dtt.typelist.Count; ++j)
                {
                    TypeDeclaration_t tdt = dtt.typelist[j];
                    //判断开始类型..
                    if (StartSign == 1 && StartType != tdt.Identifier)
                    {
                        continue;
                    }
                    StartSign = 0;

                    //CCLog.Debug(string.Format("=== replaceAllSolutionTypeMemberID Type: {0}/{1} ;Doc {2}/{3};{4}/{5}", j, dtt.typelist.Count,i, rhandle.m_solu.doctypelist.Count, tdt.Identifier, dtt.Name));

                    await replaceTypeMemberID(rhandle, dtt.FilePath, tdt, useInclude);

                    types++;
                }
                //if((i%100) == 99)
                //    rhandle.SaveNewSolution();
                if ((i % 20) == 19)
                {
                    rhandle.CheckCompileAndCommit();
                }
            }
            rhandle.CheckCompileAndCommit();
            CCLog.Info(string.Format("=== replaceAllSolutionTypeMemberID types: {0} ;compile_fails: {1}", types, rhandle.compile_fails));
        }
        public static async Task DumpAllTypesAsync(string sln, bool useInclude)
        {
            ISolutionHandler handle = new ISolutionHandler(sln);
            await handle.InitSolution(sln);

            await SolutionAsync(handle, useInclude);

            //
            string path = Path.GetDirectoryName(sln);

            Directory.SetCurrentDirectory(path);
            CRenameTokenHandler rhandle = new CRenameTokenHandler();

            rhandle.m_workspace = handle.m_workspace;
            rhandle.newSolution = handle.m_solution;
            rhandle.m_solu      = handle.m_solu;
            rhandle.m_sln       = handle.m_sln;
            await replaceAllSolutionTypeMemberID(rhandle, useInclude);

            rhandle.SaveNewSolution();
        }