我一直想为Visual Studio创建一个简单的文本操作扩展,现在我终于找到了一些时间来研究如何编写扩展.我想到的可以通过VBA宏来实现,但我宁愿将其作为“真正的”扩展来实现;作为一个学习过程,因为我老实说不能忍受VBA.
经过大量的谷歌搜索,博客阅读,深入研究MSDN和浏览StackOverflow帖子后,我想我已经收集了足够的信息,我可以实现它 – 但我想在开始之前就是否正在接近事情的一些反馈劈开:)
我想要的是:
>注册用户可以通过Tools-> Options->键盘绑定热键的命令.
>调用命令时修改活动窗口的文本缓冲区.
>我真的不关心菜单或工具栏,但知道如何通过.vsct文件添加它(有更好的选择吗?)
对于#1,似乎我必须完成一个完整的VSPackage,.vsct文件等等 – 我没有可以处理的简单易用的MEF扩展点吗? (也许导出IWpfTextViewCreationListener并摆弄手动键盘快捷键处理 – 但这是一个主要的黑客攻击).
对于#2,我不确定如何为活动文档获取ITextBuffer.我可以通过DTE.ActiveDocument,但我不知道如何从中获取ITextBuffer.或者,我可以做一些……
var txtMgr = (IVsTextManager)ServiceProvider.GetService(typeof(SVsTextManager)); IVsTextView textViewCurrent; txtMgr.GetActiveView(true,null,out textView); IWpfTextView wpfViewCurrent = AdaptersFactory.GetWpfTextView(textView); ITextBuffer textCurrent = wpfViewCurrent.TextBuffer;
……但这确实看起来像是一种迂回的做事方式?