微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 创建一个简单的文本操作Visual Studio 2010扩展

我一直想为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;

……但这确实看起来像是一种迂回的做事方式?

解决方法

对于这两者,请查看 Align Assignments extension source.它是一个包/ MEF组件,它添加一个命令并在活动窗口中处理它.

你对#1的回答是正确的.执行命令的最佳方法是使用.vsct文件,该文件需要一个包.但是,所有包都意味着您的项目将生成包含嵌入资源(来自.vsct文件)和.pkgdef文件的dll,该文件根据您在包中提供的属性添加注册表项.它(希望)不是太多开销.

对于你的第二个问题,有一种更清洁的方式.查看command filter,它在活动视图中侦听命令,而不是全局侦听它们,然后查找活动视图.它允许shell处理命令路由,并专注于实现.

原文地址:https://www.jb51.cc/csharp/243666.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐