gpt4 book ai didi

c# - 如何在 .NET 代码分析器中获取解决方案路径

转载 作者:太空狗 更新时间:2023-10-29 18:31:21 25 4
gpt4 key购买 nike

如何获取在 Roslyn 代码分析器中编译的项目/解决方案的文件路径?我需要根据相对于代码存储的一些规范文件来验证代码。不起作用的东西:

SyntaxTreeAnalysisContext.Tree.FilePath
Assembly.GetExecutingAssembly().Location
AppDomain.CurrentDomain.BaseDirectory
Environment.CurrentDirectory
Path.GetFullPath(relativePath)

最佳答案

分析器存在于工作区级别之下(它们由编译器直接运行),因此解决方案可能不存在。

由于复杂的原因,它们不是由 MEF 创建的,因此即使它确实存在,也没有简单的方法可以访问它。

在 VS 中,您可以找到全局服务提供者(例如,ServiceProvider.GlobalProvider),然后获取 SComponentModel(VS 自己的 MEF 图的根)并抓取Roslyn 的 VisualStudioWorkspace 来自于此。请注意,这是一种有点脆弱的方法,在 VS 之外根本不起作用。

即使在 VS 中,这也会以奇怪的方式中断预览 Pane 、杂项文件和其他不属于全局解决方案的上下文中的分析。

关于c# - 如何在 .NET 代码分析器中获取解决方案路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31796107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com