static void BuildSynFile(string baseDir) { DirectoryInfo dInfo = new DirectoryInfo(baseDir); //string targetName = Directory.GetParent(baseDir) + "\\.syn"; string targetName = dInfo + "\\.syn"; //BuildSynFile(baseDir, targetName); if (File.Exists(targetName)) { Stopwatch watch = new Stopwatch(); watch.Start(); byte[] bytesOldSyn = File.ReadAllBytes(targetName); SynchronizationFile synOld = bytesOldSyn.GetObject <SynchronizationFile>(); SynchronizationFile synChanged = GlobalUtil.GetSynFileChangeState(dInfo.FullName, synOld, true, true, null, null); GlobalUtil.ReportSynFile(synChanged, Console.Out); Progress("准备在同名目录下创建补丁更新包..."); GlobalUtil.CreatePatchCabinet(synChanged, baseDir, Path.GetFullPath(Path.Combine(baseDir, "patch.cab.syn"))); Progress("更新目录结构文件"); File.WriteAllBytes(Path.Combine(baseDir, "changed.syn"), synChanged.GetBytes()); watch.Stop(); if (watch.ElapsedMilliseconds > 1000) { Progress("已处理完成,本次操作共计耗时{0:0.00}秒!", (double)watch.ElapsedMilliseconds / 1000.00); } else { Progress("已处理完成,本次操作共计耗时{0}毫秒!", watch.ElapsedMilliseconds); } return; } string siteRoot = AppDomain.CurrentDomain.BaseDirectory; SynchronizationFile synFile = GlobalUtil.GetSynFile(dInfo.FullName, true, true, str => Console.WriteLine(string.Format("{0}", str.Replace(siteRoot, "").Replace(baseDir, "").Replace("\\", "/"))), p => Progress(string.Format("已完成{0}", Regex.Replace((p * 100).ToString("0.00") + "%...", "\\.0{1,}(%...)$", "%"))) ); GlobalUtil.ReportSynFile(synFile, Console.Out); File.WriteAllBytes(targetName, synFile.GetBytes()); }