# 版本差异检测仪 **Repository Path**: scpslgame/versiondifferencedetector ## Basic Information - **Project Name**: 版本差异检测仪 - **Description**: 一键找出两个版本游戏文件有哪些区别,然后生成更新包。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-07 - **Last Updated**: 2026-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 版本差异检测仪 (Version Difference Detector) [![.NET Framework](https://img.shields.io/badge/.NET%20Framework-4.8.1-blue)](https://dotnet.microsoft.com/download/dotnet-framework/net481) [![WinForms](https://img.shields.io/badge/WinForms-UI-green)](https://docs.microsoft.com/zh-cn/dotnet/desktop/winforms/) [![Gitee](https://gitee.com/scpslgame/versiondifferencedetector/badge/star.svg?theme=white)](https://gitee.com/scpslgame/versiondifferencedetector) ## 📖 项目简介 **版本差异检测仪** 是一款用于比对两个文件夹(例如旧版本游戏目录与新版本游戏目录)文件差异的 Windows 桌面工具。它能够快速扫描新旧版本文件夹下的所有文件,以**新版本为准**,将**新增**或**内容发生变化**的文件单独复制到指定输出目录,并保持原有的目录结构。 非常适合游戏开发者、软件打包人员或需要频繁对比版本差异的测试工程师使用。 ## ✨ 功能特性 - 📁 **递归扫描** – 自动遍历子文件夹中的所有文件 - 🔍 **精确比较** – 基于相对路径匹配文件,再通过二进制分块比较内容(每次 10KB),高效准确 - 📋 **差异分类** – 自动识别“新增文件”、“修改文件”和“旧版独有文件”(仅记录) - 🚀 **以新版为准** – 仅复制新版本中存在差异的文件(新增 + 内容变更) - 📂 **保持结构** – 输出目录中完整保留原文件的相对路径结构 - 🧵 **异步处理** – 后台执行比较任务,界面不卡顿,实时显示进度条和日志 - 💾 **低内存占用** – 使用字典索引 + 分块读取,即使处理数万个大文件也稳定高效 ## 🖥️ 运行环境 - **操作系统**:Windows 7 SP1 及以上(64位/32位) - **运行时**:.NET Framework 4.8.1 ([下载地址](https://dotnet.microsoft.com/download/dotnet-framework/net481)) - **权限**:对输入文件夹需有读取权限,对输出文件夹需有写入权限 ## 📥 下载与安装 1. 前往 [Releases](https://gitee.com/scpslgame/versiondifferencedetector/releases) 页面下载最新版本的 `VersionDifferenceDetector.zip` 2. 解压到任意文件夹(建议避免中文路径) 3. 双击运行 `版本差异检测仪.exe` > 也可通过源代码自行编译(需要 Visual Studio 2019 或更高版本)。 ## 🛠️ 使用方法 ### 步骤一:准备文件夹 - **旧版本文件夹**:例如 `D:\Game_1.0` - **新版本文件夹**:例如 `D:\Game_2.0` - **输出文件夹**:用于存放差异文件的空文件夹(程序会自动创建子目录) ### 步骤二:启动工具 1. 点击“浏览”按钮分别选择上述三个文件夹路径 2. 点击“开始比较并复制”按钮 ### 步骤三:查看结果 - 进度条和日志区域会实时显示每个文件的处理状态(新增/修改/相同) - 完成后弹出统计对话框,显示复制文件总数 - 打开输出文件夹即可看到所有差异文件(保持原有目录结构) ### 示例截图 > (您可以在仓库中添加一张截图,例如 `screenshot.png`,并在此处引用) > > ![主界面示例](screenshot.png) ## ⚙️ 工作原理简述 1. 递归获取两个文件夹下所有文件的**相对路径**(相对于各自根目录) 2. 使用字典(`Dictionary`)建立“相对路径 → 绝对路径”的索引 3. 对比两个字典的键(相对路径): - **仅存在于新字典** → 新增文件 → 直接复制 - **两字典共有** → 调用二进制分块比较方法检查内容是否一致 - 内容不同 → 复制新版本文件 - 内容相同 → 跳过 - **仅存在于旧字典** → 旧版独有文件(仅记录日志,不复制) 4. 所有复制操作自动创建目标子目录,覆盖已存在的同名文件(以新版本为准) ## 📝 注意事项 - 文件比较基于**二进制内容**,不依赖修改时间或大小,确保准确性。 - 相对路径完全匹配(包括子目录结构)。如果新旧版本中同一文件被移动了位置,将被视为“旧版独有 + 新版新增”,而非“修改”。 - 输出文件夹中原有内容会被**覆盖**,建议每次使用独立的输出目录。 - 不支持网络路径(如 `\\server\share`),请将文件夹映射到本地盘符。 - 若文件数量极大(超过 10 万个),首次扫描可能需要几秒钟,属于正常现象。 ## 🧩 技术栈 - 开发语言:C# - 框架:.NET Framework 4.8.1 + Windows Forms - 异步编程:`Task.Run` + `Progress` 进度报告 - 文件比较:分块读取(10KB) + `Span.SequenceEqual` ## 📄 开源许可证 本项目采用 **MIT 许可证**,详情请见 [LICENSE](LICENSE) 文件。 ## 🤝 贡献与反馈 欢迎通过 [Issues](https://gitee.com/scpslgame/versiondifferencedetector/issues) 提交 bug 报告或功能建议。如果您愿意改进代码,请 fork 本项目并提交 Pull Request。 ## 🔗 相关链接 - 码云仓库:[https://gitee.com/scpslgame/versiondifferencedetector](https://gitee.com/scpslgame/versiondifferencedetector) - 作者主页:[scpslgame](https://gitee.com/scpslgame) --- **版本差异检测仪** – 让版本迭代一目了然,让差异文件触手可及。🎯