You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Roslyn IIncrementalGenerator中Compilation对象的多项目困惑

增量生成器多项目编译的机制疑问与需求实现

文档描述的生成器调用逻辑

根据Incremental Generators文档,无论编译涉及多少项目,宿主只会调用增量生成器一次:

IIncrementalGenerator的Initialize方法会被宿主精确调用一次,无论后续可能发生多少次编译。例如,加载了多个项目的宿主可能会在多个项目间共享同一个生成器实例,且在宿主生命周期内仅调用Initialize一次。
(来源:incremental-generators.md § Pipeline based execution)

实际场景中的编译对象特性

但实际使用时,context.CompilationProvider是一个IncrementalValueProvider<Compilation>,仅提供单个Compilation对象。该对象的Assembly属性文档说明如下:

表示正在创建的程序集的IAssemblySymbol。

这意味着该Compilation对象仅对应单个项目的编译。

需求与核心疑问

我的需求是为每个符合特定条件(引用了某个特定程序集)的项目添加新的源文件,但当前生成器仅提供单个Compilation对象,且该对象似乎只关联一个程序集,因此我不确定该如何推进。

核心疑问:既然增量生成器针对多个项目仅运行一次,但Compilation对象却仅对应单个项目,这背后的机制是什么?

内容的提问来源于stack exchange,提问作者brads3290

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:57:38