/// <summary>
        /// 开始构建
        /// </summary>
        public void Run(BuildParameters buildParameters)
        {
            // 清空旧数据
            _buildContext.ClearAllContext();

            // 构建参数
            var buildParametersContext = new BuildParametersContext(buildParameters.OutputRoot, buildParameters.BuildTarget, buildParameters.BuildVersion);

            _buildContext.SetContextObject(buildParametersContext);

            // 构建选项
            var buildOptionsContext = new BuildOptionsContext();

            buildOptionsContext.CompressOption          = buildParameters.CompressOption;
            buildOptionsContext.IsForceRebuild          = buildParameters.IsForceRebuild;
            buildOptionsContext.IsAppendHash            = buildParameters.IsAppendHash;
            buildOptionsContext.IsDisableWriteTypeTree  = buildParameters.IsDisableWriteTypeTree;
            buildOptionsContext.IsIgnoreTypeTreeChanges = buildParameters.IsIgnoreTypeTreeChanges;
            _buildContext.SetContextObject(buildOptionsContext);

            List <IBuildTask> pipeline = new List <IBuildTask>
            {
                new TaskPrepare(),                 //前期准备工作
                new TaskGetBuildMap(),             //获取构建列表
                new TaskBuilding(),                //开始构建
                new TaskEncryption(),              //加密资源文件
                new TaskCheckCycle(),              //检测循环依赖
                new TaskCreatePatchManifest(),     //创建补丁文件
                new TaskCreateReadme(),            //创建说明文件
                new TaskCopyUpdateFiles()          //复制更新文件
            };

            BuildRunner.Run(pipeline, _buildContext);
            BuildLogger.Log($"构建完成!");
        }
        /// <summary>
        /// 从输出目录加载补丁清单文件
        /// </summary>
        public static PatchManifest LoadPatchManifestFile(BuildParametersContext buildParameters)
        {
            string filePath = $"{buildParameters.OutputDirectory}/{PatchDefine.PatchManifestFileName}";

            if (File.Exists(filePath) == false)
            {
                return(new PatchManifest());
            }

            string jsonData = FileUtility.ReadFile(filePath);

            return(PatchManifest.Deserialize(jsonData));
        }
        /// <summary>
        /// 开始构建
        /// </summary>
        public bool Run(BuildParameters buildParameters)
        {
            // 清空旧数据
            _buildContext.ClearAllContext();

            // 构建参数
            var buildParametersContext = new BuildParametersContext(buildParameters);

            _buildContext.SetContextObject(buildParametersContext);

            // 执行构建流程
            List <IBuildTask> pipeline = new List <IBuildTask>
            {
                new TaskPrepare(),                 //前期准备工作
                new TaskGetBuildMap(),             //获取构建列表
                new TaskBuilding(),                //开始执行构建
                new TaskVerifyBuildResult(),       //验证构建结果
                new TaskEncryption(),              //加密资源文件
                new TaskCreatePatchManifest(),     //创建清单文件
                new TaskCreateReport(),            //创建报告文件
                new TaskCreatePatchPackage(),      //制作补丁包
                new TaskCopyBuildinFiles(),        //拷贝内置文件
            };

            if (buildParameters.BuildMode == EBuildMode.SimulateBuild)
            {
                BuildRunner.EnableLog = false;
            }
            else
            {
                BuildRunner.EnableLog = true;
            }

            bool succeed = BuildRunner.Run(pipeline, _buildContext);

            if (succeed)
            {
                Debug.Log($"{buildParameters.BuildMode} pipeline build succeed !");
            }
            else
            {
                Debug.LogWarning($"{buildParameters.BuildMode} pipeline build failed !");
            }
            return(succeed);
        }
        /// <summary>
        /// 开始构建
        /// </summary>
        public bool Run(BuildParameters buildParameters)
        {
            // 清空旧数据
            _buildContext.ClearAllContext();

            // 构建参数
            var buildParametersContext = new BuildParametersContext(buildParameters);

            _buildContext.SetContextObject(buildParametersContext);

            // 执行构建流程
            List <IBuildTask> pipeline = new List <IBuildTask>
            {
                new TaskPrepare(),                 //前期准备工作
                new TaskGetBuildMap(),             //获取构建列表
                new TaskBuilding(),                //开始执行构建
                new TaskCheckCycle(),              //检测循环依赖
                new TaskEncryption(),              //加密资源文件
                new TaskCreatePatchManifest(),     //创建清单文件
                new TaskCreateReadme(),            //创建说明文件
                new TaskCreatePatchPackage(),      //制作补丁包
                new TaskCopyBuildinFiles(),        //拷贝内置文件
            };

            bool succeed = BuildRunner.Run(pipeline, _buildContext);

            if (succeed)
            {
                BuildLogger.Log($"构建成功!");
            }
            else
            {
                BuildLogger.Warning($"构建失败!");
            }
            return(succeed);
        }