有没有办法在Roslyn(也没有roslyn)的特定点添加代码?这是我的问题:我开发了一个在上下文菜单中添加命令的vspackage(在CODE WINDOW中)。当我右键单击并选择此命令时,它应该在该点添加一些代码。 我该如何解决这个问题?
答案 0 :(得分:0)
你必须:
首先要做的事情;收到文字视图:
public static IWpfTextView GetCurrentTextView(Package package)
{
try
{
var serviceProvider = package as IServiceProvider;
IVsTextManager textManager = (IVsTextManager)serviceProvider.GetService(typeof(SVsTextManager));
IVsTextView textView;
textManager.GetActiveView(1, null, out textView);
IComponentModel componentModel = (IComponentModel)serviceProvider.GetService(typeof(SComponentModel));
var factoryService = componentModel.GetService<IVsEditorAdaptersFactoryService>();
return factoryService.GetWpfTextView(textView);
}
catch
{
return null;
}
}
从中获取插入位置并插入文字:
IWpfTextView textView = GetCurrentTextView(package);
SnapshotPoint caretPosition = textView.Caret.Position.BufferPosition;
textView.TextBuffer.Insert(caretPosition, "HELLO WORLD");
不要忘记添加错误处理。