我想编写一个
IIncrementalGenerator
,它的行为略有不同,具体取决于编译器是进行发布还是调试构建。我知道你在 CsProj 中有 Optimize
标志来控制一些优化。
我想在
Optimize
调用期间检查此 Initialize
标志,以便我生成的代码可以执行更多检查并生成更激进的代码,这需要对程序集进行更多检查。调试构建不需要这样做,因为可以生成一个不太精确的简化版本。
如何在
Optimise
调用中获取 Initialize
的状态或调试/发布配置?
您无法根据编译类型更改生成器步骤,因为不能保证编译器实例将在项目配置切换期间重新启动。这样做的副作用是旧的项目配置仍然会加载到 Roslyn 中。
相反,您必须在生成器的构建阶段内检查这些。如果您得到
CompilationProvider
,则可以在 Compilation.Options.OptimizationLevel
中找到设置
CompilationLevel.Debug
未优化CompilationLevel.Release
优化然后你可以在生成器阶段做出相应的反应