首页 > 解决方案 > 在 Roslyn 分析器/源生成器中,有什么方法可以区分直接和传递程序集引用

问题描述

AIUI,传递引用是 MSBuild 而不是 Roslyn 功能,并且与 Package/ProjectReferences 而不是程序集引用有关。我相信编译器只是得到一组提供给它的程序集引用,没有关于它们来自哪里的信息。结果,我看不到任何方法可以区分分析器或源生成器中的直接引用和传递引用(即给定 CodeAnalysis.Compilation 对象)。Compilation.References 包括传递的,Compilation.ReferencedAssemblyNames 也是如此。

有人知道获取此信息的方法吗?是否有可能获取一个可以从中收集到的 MsBuild Project 对象?

标签: roslynroslyn-code-analysis

解决方案


无法获取此信息;正如您所观察到的,MSBuild 正在这样做,而当 Roslyn 获得信息时,它只是一个平面列表。由于各种技术原因,我们无法返回到 MSBuild 实例。如果您澄清了为什么需要这个,我们可能会为下一步提供一些建议。


推荐阅读