我正在爲Apache CouchDB構建類似於服務器資源管理器的東西。其中一個必要的事情是能夠編輯CouchDB中的CouchDB視圖定義,它們是JavaScript函數。Visual Studio - 編輯位於數據庫中的源代碼
我該如何欺騙Visual Studio來使用我的對象來檢索和保存JavaScript函數的內容,但仍然使用它的其餘部分 - 我對編輯器本身感到滿意,並且無意編寫自己的編輯器/語言服務等後者會比我還停留一下這個項目令
編輯
更多挖後更大的努力。這裏是我所知道的:IVsUIShellOpenDocument
接口提供了一個方法OpenStandardEditor
,它可以用來打開標準的Visual Studio編輯器。作爲參數之一,此方法將指針指向文檔數據對象的IUnknown接口。這個對象應該實現MSDN中許多地方描述的幾個接口。
Visual Studio SDK還提供文檔數據對象VsTextBufferClass
的「示例」實現。我可以創建這個類的一個實例,當我將指向實例的指針傳遞給OpenStandardEditor
時,我可以看到我的編輯器,它似乎工作正常。
當我試圖實現我自己的類實現相同的接口(IVsTextBuffer
,VsTextBuffer
,IVsTextLines
)OpenStandardEditor
方法返回成功,但VS了隨叫隨到editor.Show()
訪問衝突炸彈。
我懷疑VsTextBufferClass還實現了一些其他的接口,但不是以C#的方式,而是採用舊的COM方式。我只是不知道哪一個。
有什麼想法?
這當然是一種選擇,我只是不喜歡它,因爲它會產生各種同步問題 – mfeingold 2009-11-11 21:08:38