DiscImageStudio CHANGELOG 深度解读:从 1.0.26 到 1.3.3 的功能演进、兼容性与发布机制
发布时间:2026/11/6 6:16:26 锦皓数字建站

【免费下载链接】DiscImageStudio项目地址https://gitcode.com/GitHub_Trending/di/DiscImageStudio点击查看免费下载本文以仓库根目录的 CHANGELOG.md 为主线逐段拆解 DiscImageStudio 从首次 GitHub 发布1.0.26到 1.3.3 的版本演进并结合源码、配置与测试印证每条变更背后的真实实现。读完后你不仅能理解每个版本“改了什么”还能掌握该项目的版本号约定、Changelog 与发布流水线的耦合方式以及工程文件、盘片预设、标定记录三类磁盘格式的兼容边界。为什么这份变更日志值得单独读DiscImageStudio 是一个把图片转换成 CD/DVD/单层 BD-R 物理层数据、并可实验性直接刻录的 Windows 工具。它的发布节奏非常密1.0.26 之后 5 个功能版本集中在 2026-09 至 2026-10而每次版本升级几乎都伴随磁盘格式、命令行参数或刻录行为的可见变化。因此 CHANGELOG.md 不仅是版本记录更是一份“行为契约变更清单”哪些旧文件还能打开、哪些参数是可选的、哪些能力仍属实验性都能在日志里找到对应的表述。文章的展开顺序遵循日志本身的结构发布机制 → 版本结构 → 逐版本技术演进 → 未发布版本Unreleased的设置系统 → 兼容性矩阵 → 验证边界。版本号、Changelog 与自动发布的三角约束单一版本源Directory.Build.props整个仓库的版本只在 Directory.Build.props 维护当前内容为VersionPrefix1.3.3、VersionSuffix留空同时开启Deterministic并在 CI 环境下设置ContinuousIntegrationBuild。所有项目通过 MSBuild 继承该属性不再各自声明版本。packaging/Get-ReleaseMetadata.ps1 是这一约定的执行者它做了几件硬性校验后缀只允许空值或alpha.N/beta.N/rc.N其中N不以 0 开头正则^(alpha|beta|rc)\.[1-9][0-9]*$VersionPrefix必须是严格的A.B.C三段格式每个数字段不得超过65534以留出 .NET 程序集版本UInt16空间的边界标签必须是vA.B.C或vA.B.C-rc.N且基础版本与配置完全一致加-RequireReleaseNotes时Changelog 必须存在且仅存在一个## [版本] - YYYY-MM-DD段日期可解析、正文非空。文件版本与程序集版本被统一折算为四段数字A.B.C.0这也是 MSIX 的版本形态见 packaging/Build-MSIX.ps1 中对A.B.C.0的范围校验。发布工作流的“双文件 版本变化”门槛.github/workflows/release.yml 只在main分支且改动涉及Directory.Build.props或CHANGELOG.md时启动元数据作业随后还要额外满足两个条件才真正进入发布本次 push 的改动集合同时包含这两个文件配置中的完整版本相对上一个提交确实发生了变化脚本会读取旧提交里的Directory.Build.props若不存在则回退读取旧版 App 项目中的Version。这解释了 CHANGELOG.md 里“首次 GitHub 发布前的开发记录”中那条策略描述普通代码提交只跑常规构建只补Unreleased、不动版本号不会产出 Release。发布作业还会校验发布提交属于origin/main并复用build.yml的完整回归然后才生成标签、自包含单文件 EXE 与草稿。版本语义与日志写法CHANGELOG.md 记录、docs/RELEASING.md 明确的三档语义是改动类型版本变化日志中的示例向后兼容的问题修复patch1.0.26→1.0.27向后兼容的新功能minor1.0.26→1.1.0不兼容的接口、命令或文件格式变化major1.0.26→2.0.0对照实际日志可以看到这套语义被认真执行1.1.0 引入蓝光实验模式与新参数minor1.1.x 之后跳过 1.2.x 之前的兼容层1.2.0 重构工作区并引入.discprojminor1.3.0 把运行时升级到 .NET 10minor而所有 patch 版本1.3.1、1.3.2、1.3.3都只做新增预设与缺陷修复没有破坏旧文件读取。Changelog 的三层结构拆开 CHANGELOG.md 能看到清晰的三段式组织## Unreleased始终保留用于承接尚未成版的改动。当前这一段记录了标题栏应用菜单、设置窗口、默认工程位置与缓存位置、settings.json存储策略以及ui-snapshot的新参数。带日期与方括号的版本段## [1.3.3] - 2026-10-28这类标题是发布流水线的机器可读锚点正则要求段标题与版本号完全对应且内容不得为空。## 首次 GitHub 发布前的开发记录不做版本切分集中记录 1.0.26 之前的累计开发过程并明确声明“验证状态反映各条记录对应的阶段当前验证范围以 docs/VALIDATION.md 为准”。这种结构对自动化和人读都友好脚本只需要匹配## [x.y.z] - date就能抽取发布说明读者则可以从Unreleased判断“下一个版本大概会带来什么”。1.3.x 系列刻录正确性与几何精度的连续收敛1.3.x 的三个补丁版本主题高度一致——把盘面几何与流式刻录的数据一致性做实。1.3.3新蓝光预设与并行标定新增 Verbatim BD-R (64099) 内置预设。该预设并不只存在于 JSON 中它在 src/DiscImageStudio.BluRay/BluRayDiscParameters.cs 里以代码形式登记内半径 23.987042157339335 mm、外半径 57.987960341783236 mm、12,219,392 扇区、InvertMapping: false同时同步到 src/DiscImageStudio.Core/Presets/built-in-disc-presets.json 的bluRayPresets列表。GUI 与命令行共用同一份定义这就是日志所说“GUI 和命令行均可使用”的落地方式。修复蓝光标定流式刻录的来源摘要误显示为 CD改为按标定记录输出蓝光位长、3T/6T 极性与绘图范围。流式刻录底部固定显示“设备已写入量总量”“实时速率”“对应倍速”。日志特别强调“传输量不再覆盖实际写入进度”以及封盘或长时间无新数据时清除旧速率——这类“速率陈旧”问题是长时间刻录界面的典型陷阱。BD 标定范围映射接入普通图片生成器的有界并行批处理并复用四点几何采样保留原始标定回调、绘图范围、极性和顺序输出并且“自定义映射仍须明确允许并行”。这是一条重要的语义约束并行是可选优化不能改变回调顺序。CD 标定复用四点几何采样DVD 标定与码字回调复用变轨距 SIMD 路径同时保留逐点标量三角函数与音轨交织DVD 恒定轨距仍走既有标量回退。CD 文件模式补齐四点采样按各字节经过交换与 CIRC 映射后的独立物理位置计算并保留文件区、调色索引、扰码及盘尾边界处理。这一版体现的设计原则是“优化不得改变输出”并行/SIMD 都必须在数值与顺序上与标量路径等价相关回归条目在 docs/VALIDATION.md 中有逐项对应。1.3.2预设切换与主题色统一工程设置对话框可直接换用当前盘型的其他预设切换前确认覆盖取消则保留原参数与选中项。主题蓝统一为深色#3385FF、浅色强调#74C0FF滑钮选择器的选中项改用主题色填充高度与输入框对齐展开箭头缩为紧凑尺寸。这两个色值在 src/DiscImageStudio.App/Themes/Tokens.xaml 中可查PrimaryColor、PrimaryHoverColor。新建工程与工程设置中可右键“自定”预设删除并同步清理最近模板记录。设计页画布缩放栏常驻右下角新增“−”“”范围扩到 25%–1200%这与源码中的常量一致src/DiscImageStudio.App/Controls/DiscDesignCanvas.cs 定义MinZoom 0.25、MaxZoom 12.0。快捷键仍是 Ctrl/Alt滚轮缩放、中键拖动平移“适应窗口”改为刷新图标。主页模板卡片说明文字显示盘型修复预设切换确认框误响应普通按键、蓝光切换后另存预设沿用旧极性、删除最近预设后选中项不一致等问题。1.3.1CD 随盘文件模式与 DAO 数据轨CD 新增“随盘文件”模式未选文件夹时保留 WAV 音轨选择文件夹后生成 ISO9660/Joliet Mode 1 数据盘文件支持内圈或外圈放置工程保存、ISO 导出与流式刻录共用同一布局。设计投影与带布局信息的成品读回用黄色显示文件区保留完整盘面坐标支持中文目录与文件随盘内容保持原始字节。CD 数据盘流式刻录改为与音轨共用 DAO 会话和容量边界处理并修复铼德医疗水蓝盘预设误报“剩余容量不足”同时保留 ATIP 标定的 359,845 扇区及既有末端限制。新增 Mode 1 校验码、DAO 数据轨标识、前向流与内外圈 ISO 完整还原回归。日志同时明确CD 数据盘 DAO 已通过软件与原生内存镜像验证尚未完成实盘刻录验证即时刻录仍为实验性。1.3.0升级 .NET 10 与文件位置选项全部应用、光盘模块与工具升级到 .NET 10CI、EXE 与 MSIX 打包使用 .NET 10 SDK自包含 EXE 仍无需另装运行时。仓库中 global.json 固定10.0.100rollForward: latestFeaturesrc/DiscImageStudio.App/DiscImageStudio.App.csproj 目标框架为net10.0-windowsCore 为net10.0。DVD蓝光设计页新增“随盘文件”区域可直接选文件夹与内圈外圈位置与导出页共享设置默认内圈。外圈文件模式“保留必要的文件系统信息绘图范围自动避开文件区”。设计投影与带布局信息的成品读回以黄色显示文件区含文件系统并给出图例颜色仅用于预览没有配套布局信息的外部镜像不推测文件占用范围——这条限制避免了读回时的过度推断。1.2.0从“生成器”到“工程化工作台”1.2.0 是日志中最长的一个版本段它把工具从若干独立生成流程重构成五工作区应用设计、预览、导出、刻录、辅助标定并引入贯穿所有盘型的工程模型。工程与设计五个工作区共享“当前工程”与盘片参数CD/DVD/BD 不再各自为政。.discproj保存/打开、最近工程缩略图、未保存检查与工程设置当前盘片参数可另存为用户预设。多图层设计画布导入多张图片、移动、缩放、旋转、调整层次与显隐导出与刻录统一使用高分辨率合成图原“自动环形复制”入口移除布局交给画布。任务坞集中显示运行日志、进度、取消入口与输出位置。工程文件的结构在 src/DiscImageStudio.Core/ProjectJsonStore.cs 中定义SchemaVersion、Name、DiscFamily、Geometry、Layers、Outputs、CalibrationSessionPath、ThumbnailPngBase64等。注释明确说明Tone为 null 表示“影调概念出现之前”的文件这类工程在用户触碰影调滑杆前保持原硬阈值输出——这正是日志中“缺少影调设置的旧工程保留原二值映射”的实现依据。影调、蓝光与标定影调集中到设计页0–100% 抖动强度、亮度调整、sRGB 线性化、CD 二阶四阶灰度新工程默认 75% 抖动。默认值可在 src/DiscImageStudio.Core/ToneProfile.cs 找到对应常量Photo0.75、两级灰度。生产命令增加可选影调参数CD/DVD 采用确定性的逻辑字节抖动BD 在源图分辨率处理生成、流式刻录与设计投影使用一致设置。命令行侧可看到tone-dither0..1、tone-brightness-64..64、tone-gamma布尔三个选项例如 src/DiscImageStudio.BluRay/BluRayDiscModule.cs 与 src/DiscImageStudio.Cd/CdDiscModule.cs 中的定义默认值分别为0、0、false。BD ISO 新增配套 JSON 元数据记录盘片几何、绘图范围、映射极性、影调与 UDF 时间戳预览打开 ISO 时可自动恢复参数sidecar 往返有独立回归。标定拟合改进自动扩展搜索范围蓝光残差仍大时继续扩宽增加最大偏差、异常点标记与误差门槛。兼容性与迁移本版本最值得记的一条日志原文列出了完整的兼容承诺工程与用户预设统一支持 CD/DVD/BD保留旧工程 schema 1、旧预设 schema 2/3 及已有 CD 音轨的读取兼容生产命令保留已有参数新增影调参数均为可选。同时开发者命令ui-snapshot的页面编号被重排为 0 主页、1 设计、2 预览、3 导出、4 刻录、5 标定--about-dialog取代原关于窗口入口--live-processing移除。这类“开发工具参数变化”也被写进日志是因为截图命令确实是仓库内可复现验证的一部分。日志末尾再次重申蓝光与直接刻录仍为实验性硬件实测范围以 docs/VALIDATION.md 为准“不将自动化测试等同于新增实盘验证”。1.1.0蓝光首次落地与标定体系成型1.1.0 是整个日志里技术密度最高的版本之一可以归纳为四条主线。单层 25 GB BD-R 实验模式源图布局、3T/6T 映射与反转、盘片参数和预设、实时预览、ISO 生成及辅助标定GUI 与命令行均可使用明确“暂不支持双层盘实盘明暗仍需验证”。内圈文件与顺序刻录蓝光内圈文件支持 UDF 2.01 与大于 4 GiB 的单文件生成与流式刻录共享完整盘面几何、分段文件布局与有界数据流。全新未格式化 BD-R 采用无备用区顺序刻录保留完整 12,219,392 扇区开刻前校验容量、空白状态与起始地址不自动缩容、失败后不自动重写并增加分块超时与清理诊断。抖动、伽马与统一映射CD/DVD/BD 制作与实时预览可开启黑白抖动和独立 sRGB 伽马校正默认关闭文件生成、流式刻录与源图预览采用一致选项。CD/DVD 使用统一黑白二阶映射黑白输入保留离散像素环形复制缩放后重新抖动旧多阶产物读回继续识别原有灰阶。辅助标定与配套工具标定支持照片透视矫正、曲线描点拟合、参数快照与回填DVD 使用三次轨距模型内置已验证的 Verbatim DVD-R AZO (43533) 预设并附校准前后实拍与记录见 docs/images/verbatim-dvd-calibration-before.jpg 与 docs/images/verbatim-dvd-calibration-after.jpg。新增独立黑白抖动工具、DVD 灰阶实验工具与蓝光字节分析工具分别对应仓库中的 tools/FourLevelDither、tools/DvdGrayProbe、tools/BluRayByteProbe。刻录、窗口与许可刻录页显示按设备确认写入数据计算的速率串行化设备查询与刻录操作准备与封盘阶段不显示过时速率。修复多显示器、不同 DPI 与任务栏位置下的最大化边界对应 tests/DiscImageStudio.ArchitectureTests/MaximizedWindowBoundsTests.cs统一参数小数精度CD WAV 输出可选择是否生成 CUE。标定记录升级到 schema 6不接受旧版图案记录。采用 GPL-3.0-or-later补齐原作者版权与致谢保留第三方组件与 HarmonyOS Sans 字体各自许可“关于”页可离线查看单文件 EXE 同样包含授权文本。1.0.26 与发布前开发记录一条条“踩坑记录”1.0.26 是首个 GitHub ReleaseWindows x64 单文件 EXE 内置 .NET包含 CD WAV CUE / RAW 音轨生成、DVD 绘图 ISO 与混合数据盘以及 GUI、命令行、实时预览、环形复制与可编辑盘片预设。其后的“开发记录”段落信息量很大按主题可归纳为主题关键变更与源码落点CD 音频输出默认改为标准 WAV44.1 kHz、16 位、双声道 PCM并生成FILE ... WAVECUE旧.raw保持大端字节序WAV 在延迟交织完成后转小端流式刻录用相同的无头小端 PCMDVD 混合刻录先算 ISO9660/Joliet 布局再以不可回退的前向流写入内圈文件、ECC 对齐填充与外圈图案无需完整临时 ISO环形复制正式生成中间图 8192×8192、保存预览 4096×4096、实时预览 2048×2048日志记录每份副本实际像素尺寸预设体系内置/用户分层 JSON只保存容量与生成几何预留默认文本语言与名称/说明资源键扫描速度CD 默认速度由旧工具沿用的 1100 mm/s 改为 ECMA-130 下限 1200 mm/s并加标准范围回归流式刻录通过 64 MiB 有界内存缓冲向 IMAPI2 连续供数缓冲与预填充常量见 src/DiscImageStudio.Burning/GeneratedContentComStream.csBufferCapacityBytes 64 * 1024 * 1024、PrebufferBytes 32 * 1024 * 1024与 src/DiscImageStudio.Burning/OpticalBurnBufferOptions.csCD 会话模式从会多占 2 扇区且拒绝音轨的 Track-at-Once 改为 Raw CD/DAO通过 Windows RAW 镜像构造器流式加入 lead-in、Cooked R-W 子通道与 lead-out保留最多 3 个 DAO 扇区的受限末端 overburnDVD 极性依据实盘结果反转 dispersion 黑白字节极性黑色用扰码域0xA5白色用0x92兼容性修复修复DoNotFinalizeMedia导致的0xC0AA0502清理阶段ReleaseMedia错误不再覆盖首个写入错误工程结构新增DiscImageStudio.Core模块抽象、DiscImageStudio.Burning抽象层、DiscImageStudio.Imaging预处理层、统一 WPF GUI并为蓝光预留扩展点这些条目解释了后来版本中很多“看起来突然出现”的常量12,219,392 扇区、359,845 扇区、64 MiB 缓冲、3 扇区 overburn、0xA5/0x92极性都能在这段开发记录里找到出处。Unreleased 深读应用设置系统的设计取舍当前Unreleased段记录的是尚未成版的应用设置功能它是日志中唯一涉及“工作站偏好”而非“光盘工程”的内容值得单独剖析。菜单入口与快捷键标题栏新增“…”应用菜单提供“设置…”Ctrl,与“关于…”主页与工程态均可用侧边栏底部的“关于”入口移除。对应实现在 src/DiscImageStudio.App/MainWindow.xaml 的AppMenu资源以及 src/DiscImageStudio.App/MainWindow.xaml.cs 中的Key.OemComma ModifierKeys.Control判断刻录确认弹窗打开时会拦截快捷键避免在模态界面背后触发设置。两类设置通用与存储设置窗口为 760×600、固定尺寸、自绘标题栏左侧分“通用”“存储”底部固定“保存/取消”见 src/DiscImageStudio.App/SettingsWindow.xaml。核心行为有三条对话框工作在副本上SettingsViewModel.TrySave()成功之前不写入、不应用取消或 Esc 丢弃全部编辑。主题保存后立即生效Save成功后调用ThemeResolver.Apply让深色/浅色/跟随系统即时应用到所有窗口。缓存统计与清空始终针对“当前生效目录”而不是输入框里尚未保存的路径。这三条在 src/DiscImageStudio.App/ViewModels/SettingsViewModel.cs 的类注释与RefreshCacheUsage()中有直接体现ActiveCacheDirectory TempFiles.LivePreviewDirectory。settings.json宽容加载 原子保存应用设置存放于%LOCALAPPDATA%\DiscImageStudio\settings.json不写入.discproj。这一点由 src/DiscImageStudio.App/Services/AppSettings.cs 的注释定义设置描述的是工作站不是某个光盘工程因此与最近工程历史并列而不是进工程文件。数据结构很简单但健壮性要求很高{ schemaVersion: 1, theme: dark, defaultProjectDirectory: , cacheDirectory: }键名与字符串枚举形式由 tests/DiscImageStudio.ArchitectureTests/AppSettingsTests.cs 的往返断言确认上述取值仅为示例。加载与保存策略由 src/DiscImageStudio.App/Services/AppSettingsStore.cs 实现缺失文件→ 返回默认值深色主题、两个目录为空损坏 JSON、未知主题字符串、越界枚举数字→ 全部回落默认值Normalize()会把未定义枚举纠正为AppTheme.Dark更高 schemaVersion→ 直接返回默认值而不是丢弃未知字段后强行解释未知成员如future: true则被忽略不影响读取相对路径、空白路径、非法字符→ 规范化为空字符串NormalizeDirectory只保留可GetFullPath的绝对路径保存→ 先写settings.json.guid.tmp并Flush(flushToDisk: true)再File.Move(..., overwrite: true)原子替换失败时删除临时文件并向上抛出让设置对话框显示“无法保存设置…”。测试会断言目录中不残留*.tmp。之所以“加载宽容、保存严格”源码注释说得很直白损坏的偏好文件绝不能阻止应用启动而保存失败必须让用户看到并修正路径因此错误要冒泡到对话框。默认位置留空即回退默认工程位置作为新建工程对话框的初始目录留空使用系统文档目录。实际回退值是%USERPROFILE%\Documents\DiscImageStudio Projects见 src/DiscImageStudio.Core/ProjectJsonStore.cs 的GetDefaultProjectsDirectory()该值也作为输入框水印显示DefaultProjectDirectoryPlaceholder避免“空”被误读成“没有位置”。保存时对默认工程位置要求requireExisting: true目录必须存在而缓存位置允许不存在可创建。缓存目录写探针、白名单与任务互斥缓存位置用于设计合成图、缩略图与预览图。切换后新任务使用新位置旧缓存不会自动迁移运行中的任务保留已解析路径。相关逻辑集中在 src/DiscImageStudio.App/Services/TempFiles.cs默认目录为%TEMP%\DiscImageStudio切换校验不只检查“能不能创建目录”还会写入一个零字节的.write-probe-guid探针文件再删除确保目录真的可写相对路径、不可写、无法承载目录的路径一律回退默认目录返回值是实际生效目录清理白名单按文件名前缀匹配design-composite-、design-tone-、cd-live-、dvd-live-、bd-live-外加固定名design-thumbnail.png对应 sidecar 是*.png.json。因为自定义目录可能与用户文件共享所以ClearCache()只删白名单内文件目录本身从不删除GetCacheSize()也只统计这些文件任务互斥CanClearCache()返回!IsBusy主窗口订阅ShellViewModel.IsBusy变化并调用RefreshBusyState()任务运行期间“清空缓存”按钮禁用二次确认文案明确“工程文件与导出文件不受影响”见 src/DiscImageStudio.App/SettingsWindow.xaml.cs。测试 tests/DiscImageStudio.ArchitectureTests/TempFilesCacheTests.cs 用一组托管/非托管文件名验证了白名单边界BD-LIVE-PROJECTION-7.PNG因大小写不敏感被识别design-thumbnail.png.json因不是应用写出的 sidecar 被排除notes.txt、photo.png、design-composite-cd.jpg、archive.zip与嵌套目录全部保留。主题即时切换的三处“坑”“保存后立即应用到所有窗口代码绘制的侧边栏、分段控件、盘面画布与任务坞同步刷新”这句话背后有一套资源覆盖机制见 src/DiscImageStudio.App/Services/ThemeResolver.cs顺序敏感深色 token 在 src/DiscImageStudio.App/Themes/Tokens.xaml浅色是覆盖层 src/DiscImageStudio.App/Themes/Palette.Light.xaml。合并顺序必须是Tokens → Light可选→ Controls覆盖层要排在 token 之后才能赢得查找又要排在控件之前否则控件解析不到键。AppHost.CreateApplication正是按此顺序插入的。引用必须动态控件引用调色板键必须用DynamicResource否则加载时就把深色值冻结。tests/DiscImageStudio.ArchitectureTests/ThemePaletteTests.cs 强制校验两点浅色覆盖层必须覆盖深色 token 中每个以Color/Brush结尾的键且元素类型一致、不得发明新键任何视图 XAML 都不得用StaticResource引用这些调色板键。代码绘制控件要主动重绘自定义画布、动画画刷通过订阅ThemeResolver.Changed重新读取ThemeValues。目前 src/DiscImageStudio.App/Controls/DiscDesignCanvas.cs、src/DiscImageStudio.App/Controls/CalibrationPhotoCanvas.cs、src/DiscImageStudio.App/Controls/SideNavItem.xaml.cs 都在Loaded订阅、Unloaded退订收到事件后InvalidateVisual()。ThemeValues在无Application的设计时/无头测试环境会回退到字面量因此调用方无需判空。“跟随系统”的判定读取注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize的AppsUseLightTheme值为非 0 整数则浅色读取异常一律按深色处理——这保证了注册表不可读时仍能启动。开发截图ui-snapshot 的新参数Unreleased记录的第二组变更是开发截图命令新增--theme dark|light|system、--settings-dialog默认 760×600使用一次性设置文件不改动真实配置与--settings-view general|storage。实现见 src/DiscImageStudio.App/UnifiedCommandRunner.cs 与 src/DiscImageStudio.App/UiPreviewRenderer.cs主题在窗口创建前解析非法值直接抛Snapshot theme must be dark, light or system.设置对话框截图把AppSettingsStore指向%TEMP%\disc-settings-snapshot-guid.json因此永远不会读取或改写真实设置文件--settings-view只接受general或storage非法值报Settings snapshot view must be general or storage.尺寸下限从常规的 800×600 放宽到设置对话框的 640×600上限统一 4096×2160分类需要在Show()之前选中避免截图捕到导航项淡入的第一帧。一个可复制的调用示例Windows 环境WPF 依赖dotnet run --project src/DiscImageStudio.App --configuration Release --no-build -- ui-snapshot --output artifacts/validation/settings-storage.png --settings-dialog --settings-view storage --theme light兼容性矩阵三类磁盘格式与一个偏好文件把整个日志里散落的“schema”“兼容”“仍可读取”集中起来可以得到一张清晰的边界表数值均来自源码常量文件类型当前版本仍可读取的旧版本源码依据工程.discprojschema 2schema 1只含 CD/DVDschema 1 声明蓝光字段会被拒绝保存时迁移到 2src/DiscImageStudio.Core/ProjectJsonStore.cs用户盘片预设schema 4新增bluRayPresetsschema 2、schema 3迁移在写入时发生src/DiscImageStudio.Core/DiscPresetJsonStore.cs标定记录.calibration.jsonschema 6不接受旧版梳形图案记录src/DiscImageStudio.Core/Calibration/CalibrationTarget.cs应用设置settings.jsonschema 1缺失/损坏/更高版本一律回落默认值src/DiscImageStudio.App/Services/AppSettings.cs几个容易忽略的细节预设 schema 3 被标注为“中间版本”——它由一个曾移除linearVelocityMmPerSecond与channelBitLengthNm的构建写出把它保留为可读是为了版本回退时不会“困住”用户已保存的预设。预设 JSON 使用UnmappedMemberHandling.Disallow即预设文件里的未知字段是错误这与设置文件的“忽略未知成员”策略相反因为预设是结构化数据未知字段往往意味着版本不匹配。工程 schema 1 若声明蓝光字段会抛出InvalidDataException避免把旧文件误读成蓝光工程。标定记录不依赖原照片路径保存了生成快照、缩小后的原照片、轮廓控制点、光盘规格与所有曲线点重新打开时可继续描线但拟合候选需重新计算见 docs/CALIBRATION.md。验证与发布日志里的“已通过”到底指什么日志频繁出现“回归通过”“通过验证”其可信边界由 docs/VALIDATION.md 定义。几个关键事实测试入口是自研 Exe harness不使用dotnet test架构回归覆盖 CD/DVD 映射与 SIMD 一致性、CD 文件模式内外圈、CD 数据 DAO 的 EDC 与 P/Q 校验、BD 的 17PP/EDC/Reed-Solomon 与 3T/6T 极性、文件位置、三态模型、刻录互斥与清理等。最近一次完整架构回归记录为 2026-10-28对应 1.3.3 相关的三个提交环境为 Windows .NET SDK 10.0.400运行时 10.0.11Release 配置完整 solution 构建 0 警告 0 错误。实盘验证与自动化测试被明确区分刻录测试使用模拟接口而非真实刻录机“不将自动化测试等同于新增实盘验证”。本地复现命令摘自验证文档dotnet restore DiscImageStudio.slnx dotnet build DiscImageStudio.slnx --configuration Release --no-restore dotnet run --project tests/DiscImageStudio.ArchitectureTests --configuration Release --no-build dotnet run --project src/DvdImageSolver --configuration Release --no-build -- selftest dotnet run --project src/DiscImageStudio.App --configuration Release --no-build -- selftest ./tests/Test-ReleaseTooling.ps1发布侧还有两道独立校验本地演练powershell -ExecutionPolicy Bypass -File packaging/Build-Release.ps1会构建并隔离验证自包含win-x64EXE自检、两扇区 RAW/WAV/CUE 生成、GUI 渲染、版本号比对、删除多余DvdImageSolver.runtimeconfig.json再输出SHA256SUMS.txt正式发布则由工作流计算 SHA-256 写入 Release 说明。创作者与维护者可对照 docs/RELEASING.md 里的Get-FileHash命令核对下载文件。从这份变更日志能学到什么工程实践抛开具体的光盘物理细节CHANGELOG.md 本身展示了几个可迁移的实践把“兼容承诺”写进日志正文而不是只写在发布说明里。1.2.0 那句“保留旧工程 schema 1、旧预设 schema 2/3 及已有 CD 音轨的读取兼容”让后来者能直接判断升级风险。让日志成为流水线的输入。段标题的格式、日期、非空正文都是发布脚本的强制条件因此日志不会被写成随意笔记。区分“新增能力”与“验证状态”。每一处实验性功能都紧跟一句边界说明“尚未完成实盘刻录验证”“暂不支持双层盘”这类诚实标注比任何宣传语都更有价值。把可复现性写进日志。开发截图命令的参数变更、验证文档的提交号与环境版本都被记录使“当时确实验证过”可被独立复现。结语从 1.0.26 到 1.3.3DiscImageStudio 的变更日志描绘了一条清晰的主线先把 CD/DVD 的生成与刻录链路做稳字节序、会话模式、极性、缓冲再把蓝光以“实验模式”纳入同一套几何与流式框架最后用工程文件、预设分层与影调系统把三者统一到同一个工作台。当前Unreleased段则把视角从“光盘”移向“工作站”用一份宽容加载、原子保存、白名单清理的settings.json把主题、默认工程位置与缓存位置的体验补齐。要追踪这个项目下一步走向最有效率的方式仍然是读最新版本的日志段再顺着条目去对应源码文件确认实现边界。赞分享【免费下载链接】DiscImageStudio项目地址https://gitcode.com/GitHub_Trending/di/DiscImageStudio点击查看免费下载相关推荐Draper 4.0.6 版本演进深度解读从 CHANGELOG 看 Rails 装饰器库的委托机制与兼容性策略Draper 4.0.6 版本演进深度解读从 CHANGELOG 看 Rails 装饰器库的委托机制与兼容性策略 Draper 为 Rails 应用提供 De后端Firecracker 版本演进与功能变迁从 v0.1 到 1.16 的 CHANGELOG 深度解读Firecracker 版本演进与功能变迁从 v0.1 到 1.16 的 CHANGELOG 深度解读 Firecracker 是面向 Serverless虚拟化云原生wrt_release 配置片段机制深度解析proxy/nss/docker_deps 自由组合拼出你的理想固件wrt_release 配置片段机制深度解析proxy/nss/docker_deps 自由组合拼出你的理想固件 wrt_release 是一个按设备自动拉上一篇MathWriting 数据集完全指南在线手写数学表达式的数据格式、标注体系与实战解析下一篇PakePlus-Android终极指南9分钟将网页变成专业应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。