架构概览
本文是当前编码产品的权威架构。产品没有兼容基线期间,公开名称可能改变。
CrystalCode (terminal host: the executable) ↓ ↓CrystalCode.Display CrystalCode.Engine ↓ ↓Spectre.Console CrystalCode.Providers(rasterization; ↓Terminal.Gui is Crystalreferenced, not called)
CrystalCode.Engine also references CrystalCode.Tools, CrystalCode.Plugins,Crystal.Tools, Crystal.Agents, and Crystal.Harness directly.CrystalCode.Tools and CrystalCode.Plugins each reference only Crystal andCrystal.Tools. CrystalCode referencesSpectre.Console and Spectre.Console.Cli for its commands and cards.CrystalCode.Display references Spectre.Console and Terminal.Gui only.It does not reference Crystal, Crystal.Tools, CrystalCode.Tools, theengine, or the executable host. CrystalCode.Engine does not referenceSpectre.Console, Terminal.Gui, CrystalCode.Display, or the executablehost, and it never touches the console. CrystalCode.Providersreferences only Crystal. No project in this repository modifies Crystal.第二个前端(例如桌面应用)引用 CrystalCode.Engine 并提供自己的界面。它不复制引擎代码。如果该桌面前端用 Avalonia 构建,用 C# markup 写 UI。不要添加 XAML 或 AXAML 文件。上面任一方向被跨越时,EngineAssemblyTests 和 DisplayAssemblyTests 会使构建失败。
CrystalCode.Tests 引用 CrystalCode。 CrystalCode.Engine.Tests 引用 CrystalCode.Engine。 CrystalCode.Display.Tests 引用 CrystalCode.Display。 CrystalCode.Providers.Tests 引用 CrystalCode.Providers。