gpt4 book ai didi

c# - 使用 Roslyn 访问调用引用

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:51 25 4
gpt4 key购买 nike

我想使用 Roslyn 创建一个 Visual Studio Extension(VSIX)。此扩展应该找到所有调用,然后查找它们的定义以分析在它们上定义的属性。方法的定义可以在解决方案的任何地方。

我的第一个类是这样的:

namespace MainProject
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(BusinessProject.Calc.AddNumbers(5, 8));
}
}
}

我的第二堂课是这样的:

namespace BusinessProject
{
public class Calc
{
[CustomAttr("Do something")]
public static long AddNumbers(int a, int b)
{
return a + b;
}
}
}

在上面的示例中,在 Program 类中,我调用了 AddNumbers 方法。我想 1) 分析代码,2) 找到这个调用,3) 获取类 Calc 中引用方法的所有属性,4) 处理属性参数,5) 然后发出警告/错误如果需要的话。我可以分析当前类以找到 RegisterCodeBlockAction 的所有调用,但我不能做的是访问整个解决方案以找到调用的定义,然后访问引用的属性。

如何在 RegiserCodeBlockAction 中访问整个解决方案?

最佳答案

你调用了错误的方法。

您实际上希望您的分析器在每次方法调用时运行,而不是在每个代码块上运行。
因此,您应该调用 RegisterSyntaxNodeAction ,并传递 SyntaxKind.InvocationExpression

然后它会用一个 InvocationExpressionSyntax 调用您,其中包含您需要的所有信息(大部分在语义模型中)。

关于c# - 使用 Roslyn 访问调用引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993510/

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