跳转至

构建与测试

双 Cecil 构建

整个解决方案共用同一个 CecilFlavor 开关,因此两代 Cecil 都能跑全量测试。

Mono.Cecil MonoMod 产出包
Cecil10(默认) [0.10.0, 0.10.4](测试使用 0.10.4 19.9.1.6 MonoWeaver.Cecil10
Latest [0.11.2,)(测试使用 0.11.6 22.7.31.1 MonoWeaver
dotnet test MonoWeaver.slnx
dotnet test MonoWeaver.slnx -p:CecilFlavor=Latest

两个都要通过。开关定义在仓库根的 Directory.Build.props

仓库里的项目

项目 用途
MonoWeaver Mod 实际引用的库
tests/MonoWeaver.PatternTests 匹配、改写、委托和 MonoMod 兼容测试
tests/MonoWeaver.ILTests 修改后检查器的测试
tests/MonoWeaver.DocSamples 文档里所有代码块的来源,只编译不运行
MonoWeaver.Fuzz 自动生成大量情况做压力测试
benchmarks/MonoWeaver.Benchmarks IL 验证吞吐,以及与 MonoMod 的打补丁耗时对比
dotnet run -c Release --project benchmarks/MonoWeaver.Benchmarks -- --verify-only --max-method-us 50000

文档站

文档源码在 docs/content/zh/ 是默认语言,en/ 是翻译。

python -m venv .venv && .venv/Scripts/activate && pip install -r docs/requirements.txt

本地预览(必须从仓库根运行,代码片段路径是相对工作目录解析的):

mkdocs serve -f docs/mkdocs.yml

严格构建,和 CI 一致:

mkdocs build -f docs/mkdocs.yml --strict