试图在roslyn获得一个类实例的识别

本文关键字:一个 实例 识别 roslyn | 更新日期: 2023-09-27 18:16:06

我正在写一个Visual Studio扩展,我想通过它的名称和位置获得变量的类型。

例如

:有一个c#代码:

class Program
{
   static void Main(string[] args)
   {
     var flagMick = true;
     Console.WriteLine(""Hello, World!"");
   }
}

我能够与ExpressionEvaluator和DTE通信,我能够从快照中读取数据并了解其位置。我有具体的位置,但是:

我不想"重新学习"c#解析,这就是Roslyn应该做的。

所以我想我的扩展来识别"旗杆"的类型,给定它的名称和位置在屏幕上。

我怎么能和Roslyn这样呢?

试图在roslyn获得一个类实例的识别

使用以下代码:

var doc = point.Snapshot.GetOpenDocumentInCurrentContextWithChanges();
var model = doc.GetSemanticModelAsync().Result;
var symbol = SymbolFinder.FindSymbolAtPosition(model, point, doc.Project.Solution.Workspace);

您将需要一个对Microsoft.CodeAnalysis.EditorFeatures.Text.dll的引用,您可以通过添加适当的NuGet包来获得。