编译 API 完整参考
深入理解 Roslyn 编译 API 的创建、配置和使用
📋 文档信息
| 属性 | 值 |
|---|---|
| 难度 | 高级 |
| 阅读时间 | 60 分钟 |
| 前置知识 | C# 基础、Roslyn 基础 |
| 相关文档 | 语义模型 API |
🎯 学习目标
完成本系列文档后,你将能够:
- ✅ 创建和配置 CSharpCompilation
- ✅ 管理元数据引用
- ✅ 加载和解析程序集
- ✅ 跨程序集查找符号
- ✅ 配置编译选项
- ✅ 应用高级编译技术
📚 文档列表
本系列文档分为以下几个部分:
| 文档 | 说明 | 难度 |
|---|---|---|
| 编译创建和配置 | CSharpCompilation.Create、添加语法树、配置选项 | 中级 |
| 元数据引用管理 | MetadataReference、引用类型、引用管理 | 中级 |
| 程序集加载和解析 | 加载程序集、解析元数据、处理依赖 | 高级 |
| 跨程序集符号查找 | 查找外部符号、解析类型引用 | 高级 |
| 编译选项和优化 | CSharpCompilationOptions、优化级别、输出类型 | 中级 |
| 高级编译技术 | 增量编译、并行编译、诊断过滤 | 高级 |
| 最佳实践 | 最佳实践和常见问题 | 中级 |
🚀 快速开始
创建简单的编译
csharp
using Microsoft.CodeAnalysis.CSharp;
// 创建最简单的编译
var compilation = CSharpCompilation.Create("MyAssembly");
// 添加语法树
var syntaxTree = CSharpSyntaxTree.ParseText("class MyClass { }");
compilation = compilation.AddSyntaxTrees(syntaxTree);
// 添加引用
var mscorlib = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);
compilation = compilation.AddReferences(mscorlib);📊 编译 API 概览
核心类型
| 类型 | 说明 |
|---|---|
| CSharpCompilation | C# 编译的核心类 |
| MetadataReference | 元数据引用基类 |
| PortableExecutableReference | PE 文件引用 |
| CompilationReference | 编译引用 |
| CSharpCompilationOptions | 编译选项 |
编译流程
🔗 相关资源
🚀 下一步
最后更新: 2026-02-05
注意: 本文档系列正在从原始的 3174 行文档中迁移内容。完整内容请参考 原始文档。