1.9 KiB
1.9 KiB
Script Compilation Process / Quá trình Biên dịch
📋 Overview / Tổng quan
ScriptEngine compile C# scripts sử dụng Roslyn để extract metadata và generate executable runners.
🔄 Compilation Flow / Luồng Biên dịch
flowchart TD
Start([User clicks Build]) --> Collect[Step 1: Collect Files<br/>Load all .cs files]
Collect --> Merge[Step 2: Merge Code<br/>Combine into DummyClass]
Merge --> Compile[Step 3: Compile<br/>Roslyn CSharpCompilation]
Compile --> Analyze[Step 4: Analyze<br/>Extract Variables, Tasks, Missions]
Analyze --> Generate[Step 5: Generate Runners<br/>Create TaskRunner, MissionRunner]
Generate --> Ready[State: Ready<br/>Can start execution]
Compile -->|Errors| BuildError[State: BuildError<br/>Show diagnostics]
style Start fill:#e6ffe6
style Ready fill:#e6ffe6
style BuildError fill:#ffe6e6
📝 Chi tiết từng bước / Step Details
- Collect Files: Load tất cả
.csfiles từ filesystem - Merge Code: Combine vào một
DummyClassđể phân tích - Compile: Sử dụng Roslyn để compile và lấy SemanticModel
- Analyze: Extract metadata (variables với
[Variable], methods với[Task]/[Mission]) - Generate Runners: Tạo executable classes cho mỗi task/mission
🔍 IntelliSense Support / Hỗ trợ IntelliSense
- Sử dụng AdhocWorkspace trên WebAssembly
- IntelliSense, Hover information, Diagnostics
- Real-time code analysis
- No server round-trip for IntelliSense
🔗 Related Documents / Tài liệu Liên quan
- ScriptEngine Overview - Tổng quan ScriptEngine
- State Machine Design - Kiến trúc State Machine chi tiết
- Script Files - Quản lý file script
Last Updated: 2025-11-13