roslyn - 在 Roslyn 分析器/源生成器中,有什么方法可以区分直接和传递程序集引用
问题描述
AIUI,传递引用是 MSBuild 而不是 Roslyn 功能,并且与 Package/ProjectReferences 而不是程序集引用有关。我相信编译器只是得到一组提供给它的程序集引用,没有关于它们来自哪里的信息。结果,我看不到任何方法可以区分分析器或源生成器中的直接引用和传递引用(即给定 CodeAnalysis.Compilation 对象)。Compilation.References 包括传递的,Compilation.ReferencedAssemblyNames 也是如此。
有人知道获取此信息的方法吗?是否有可能获取一个可以从中收集到的 MsBuild Project 对象?
解决方案
无法获取此信息;正如您所观察到的,MSBuild 正在这样做,而当 Roslyn 获得信息时,它只是一个平面列表。由于各种技术原因,我们无法返回到 MSBuild 实例。如果您澄清了为什么需要这个,我们可能会为下一步提供一些建议。
推荐阅读
- apache-spark - 如何从 Spark 将数据放入 Ignite Cache
- pytorch - 在 Ubuntu 20.04 上安装适当版本的 CUDA 和 CuDNN 后,torch.cuda.is_available() 会返回 FALSE
- java - java.sql.SQLRecoverableException:IO 错误:连接重置
- jinja2 - 如何在 Jinja 的 for 循环后省略空行?
- javascript - 设置 initialSlide 时,光滑的滑块不起作用
- r - FUN == 'x' 不起作用,如何在 R 中绕过它
- javascript - Oracle Apex - 单击按钮时复制页面的 URL
- java - How can I create vertical bars at a specific position after a value?
- flutter - 无论如何要减小这个 Flutter 应用程序的大小(120mb)
- python - 如何使用 PySerial 重新连接蓝牙连接(算法问题)Raspberry Pi - 蓝牙设备