本仓库提供《C# 12.0 本质论》(第 8 版,清华大学出版社,2024 年)中文版的配套源代码。
代码及测试以中文版译稿和本仓库已修正的示例为准。中文版翻译过程中核对并修订了英文纸质版的部分疏漏,相关勘误和配套资源见中文版主页。
EssentialCSharp.com 提供英文在线资料,参阅时请留意版次和代码清单编号的差异。
中英文版配套资源和试读 PDF 可从中文版主页获取,也可使用百度网盘备用地址。
- .NET SDK:使用 .NET 8 SDK 构建项目,SDK 选择规则见
global.json。项目保留net8.0、net7.0和net6.0三个目标框架;运行或测试某个目标框架时,需要安装对应的运行时。 - Visual Studio:可使用支持 .NET 8 的 Visual Studio 2022;Visual Studio 2026 的本机构建与测试验证结果见下文。也可使用 .NET CLI 命令。
- Git:可用于克隆仓库和获取更新;也可使用 Visual Studio 的 Git 功能。
2026 年 11 月 11 日,基于提交 49ff1c93,在 Windows x64、Debug、简体中文(zh-CN)环境中,使用 Visual Studio Professional 2026 18.12.0 自带的 MSBuild 18.12.2 和 VSTest 18.12.0 完成了完整重新构建与测试。SDK 按 global.json 实际选择为 .NET SDK 8.0.319。
46 个项目的三个目标框架全部构建成功,0 个错误。全部 69 个测试程序集共执行 1,936 次测试,全部通过,无失败或跳过,未缩减测试范围。
| 目标框架 | 测试程序集 | 通过测试次数 | 运行时探针结果 |
|---|---|---|---|
net8.0 |
23 | 650 | .NET 8.0.34 |
net7.0 |
23 | 646 | .NET 7.0.20 |
net6.0 |
23 | 640 | .NET 6.0.36 |
此次验证未发现构建或测试兼容性问题,结论限于上述环境和提交。构建仍有 139 条警告,涉及 .NET 6/7 生命周期、旧 API 及教材演示代码;未通过更改目标框架、跳过测试或隐藏警告来取得通过结果。
先右键单击一个项目,选择“重新加载项目”。若出现错误,请根据完整错误信息检查 SDK、运行时或工作负载。若项目可以正常加载,但重新打开解决方案后又恢复为卸载状态,可尝试重建本地解决方案状态:
- 保存工作,并在所有 Visual Studio 实例中关闭该解决方案。
- 备份并重命名对应的
.suo文件:VS2022 为.vs/EssentialCSharp/v17/.suo,VS2026 为.vs/EssentialCSharp/v18/.suo。 - 重新打开
EssentialCSharp.sln,检查项目加载状态。
.suo 保存个人解决方案设置,重建后可能需要重新选择启动项目等设置;保留备份以便恢复。本机已通过此方式恢复全部 46 个项目,并验证重新打开后仍保持加载。这类本地状态文件无需提交到 GitHub。
- 打开主解决方案
EssentialCSharp.sln。 - 选择“生成 → 生成解决方案”。
- 将要阅读的章节设为启动项目。例如,运行第 1 章时,右键单击
Chapter01,选择“设为启动项目”。 - 选择 .NET 8 目标框架,按 F5 或选择“调试 → 开始调试”。
- 按程序提示输入当前章节的代码清单编号,例如
1.1。运行其他章节时,请切换到对应的启动项目。
在仓库根目录(包含 EssentialCSharp.sln 的目录)还原并构建项目:
dotnet restore
dotnet build --no-restore例如,从仓库根目录运行第 1 章:
dotnet run --project src/Chapter01/Chapter01.csproj --framework net8.0项目包含多个目标框架,运行时需使用 --framework 指定其中一个。程序启动后,按提示输入当前章节的代码清单编号。也可以先进入章节目录,再执行 dotnet run --framework net8.0。
更多命令说明见 .NET CLI 文档。
测试断言按中文版译稿及本仓库的配套示例维护,覆盖 net6.0、net7.0 和 net8.0 三个目标框架。
CI 在 Windows、Linux 和 macOS 上执行构建与测试,并在 Linux 上分别执行“简体中文主验证”(zh-CN)和“法语跨区域检查”(fr-FR)。两组区域测试均运行全部现有测试及三个目标框架:简体中文组覆盖中文读者的典型环境,法语组验证数字、日期等区域格式差异。CI 会核对实际区域设置和目标运行时。
部分清单刻意演示编译错误或运行时异常;对应测试会核对编译诊断或预期异常。请保留这些教学示例的设计意图。
在 Visual Studio 中,可以通过“测试资源管理器”运行全部测试,也可以右键单击具体测试方法,选择“运行测试”或“调试测试”。详见 Visual Studio 测试文档。
从仓库根目录运行全部测试:
dotnet test运行单章测试时,可指定测试项目,例如:
dotnet test src/Chapter01.Tests/Chapter01.Tests.csproj配套工程包含运行入口、测试和辅助代码,因此部分文件与书中的展示形式有所不同。阅读代码时,可通过以下标记识别书中展示的部分:
#region INCLUDE与#endregion INCLUDE之间是书中展示的代码。#region EXCLUDE与#endregion EXCLUDE之间的内容在书中省略,通常以// ...表示。- 行尾带有
// EXCLUDE的代码在书中省略。
配套代码保持与已出版中文版一致。仓库整理和 CI 维护不改动教材代码、测试、依赖版本或目标框架;刻意演示错误的示例及对应测试继续保留。
依赖更新采用人工审查和合并策略,不自动合并。检查通过仅作为审查依据;涉及教材配套代码或行为的变更,需要另行确认。本仓库不启用英文版版本分支之间的自动同步。
使用 Issues 报告问题或错误,通过 Discussions 讨论用法,通过 Pull requests 提交修正。反馈时请注明中文版版次、章节或代码清单编号,以及复现步骤。
资讯、下载与勘误请访问中文版主页。
祝编程愉快!

