我一直想爲Visual Studio創建一個簡單的文本操作擴展一段時間,現在我終於找到了一些時間來研究擴展如何編寫。我想到的可以通過VBA宏來實現,但我寧願將它實現爲「真正」的擴展;作爲一個學習過程,並且因爲我誠實地無法忍受VBA。創建一個簡單的文本操作Visual Studio 2010擴展
經過大量的谷歌搜索,博客閱讀,挖掘到MSDN和瀏覽StackOverflow帖子後,我想我已經收集了足夠的信息來實現它 - 但是我想要一些關於我是否正在接觸事物的反饋之前,我開始劈砍而去:)
我想的是:
- 註冊用戶可以通過工具 - >選項 - >鍵盤綁定的熱鍵命令。
- 調用命令時修改活動窗口的文本緩衝區。
- 我真的不關心菜單或工具欄,但知道如何將它通過.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;
...但那肯定看起來像一個迂迴的做事方式?
謝謝!有一些關於爲每個VsTextView添加一個過濾器讓我感到有些不耐煩,但是解決方案*是*更好。太糟糕了,仍然需要處理醜陋的com/ole遺留問題,但至少它是微乎其微的,可以被抽象掉:) – snemarch 2010-11-04 10:10:13