我正在使用 Roslyn 创建一个带有 IntelliSense 的 C# 脚本控件。
我通常对得到的结果非常满意,但是,推荐的符号不包含诸如for和if等关键字,也不包含类型别名,例如int, 当它包含Int32.
更具体地说,我正在使用Microsoft.CodeAnalysis.Recommendations,即:
Recommender.GetRecommendedSymbolsAtPositionAsync(mySemanticModel, scriptPosition, myAdhocWorkspace);
Run Code Online (Sandbox Code Playgroud)
我的SemanticModel对象是从 C# 编译获得的,它mscorlib.dll至少总是有一个引用。
在我的脚本中的所有位置,推荐的完成总是正确的。但是,我认为他们是不完整的,如果缺少关键字,如if,else和for等。
我可以看到,手动将常见类型别名包含在我的 IntelliSense 中对我来说很容易。也就是说,如果Int32可能完成,那么我可以手动添加int.
但是,在给定的范围内,if语句或for语句甚至is/何时as合适就不太明显了。
以这种方式获取推荐符号时,是否可以包含这些关键字?
还有一种方法可以自动包含类型别名吗?