Visual Studio - редактировать исходный код, расположенный в базе данных - PullRequest
0 голосов
/ 12 октября 2009

Я создаю нечто похожее на Server Explorer для Apache CouchDB. Одна из необходимых вещей - возможность редактировать определения представлений CouchDB, которые в CouchDB являются функциями JavaScript.

Как я могу заставить Visual Studio использовать мой объект для извлечения и сохранения содержимого функции JavaScript, но при этом использовать все остальное - я доволен самим редактором и не собираюсь писать свой собственный редактор / языковой сервис, и т. д. Последнее будет гораздо большим усилием, чем того требует этот проект

Редактировать

После дальнейших копаний я все еще застрял. Вот что я знаю: интерфейс IVsUIShellOpenDocument предоставляет метод OpenStandardEditor, который можно использовать для открытия стандартного редактора Visual Studio. В качестве одного из параметров этот метод принимает указатель на интерфейс IUnknown объекта данных документа. Предполагается, что этот объект реализует несколько интерфейсов, описанных во многих местах по всему MSDN.

Visual Studio SDK также предоставляет пример реализации объекта данных документа VsTextBufferClass. Я могу создать экземпляр этого класса, и когда я передаю указатель на экземпляр в OpenStandardEditor, я вижу свой редактор, и он, кажется, работает нормально.

Когда я пытаюсь реализовать свой собственный класс, реализующий те же интерфейсы (IVsTextBuffer, VsTextBuffer, IVsTextLines), метод OpenStandardEditor возвращает успех, но VS взрывается при вызове editor.Show() с нарушением доступа.

Я подозреваю, что VsTextBufferClass также реализует некоторые другие интерфейсы, но не в C #, а скорее в старом добром COM-стиле. Я просто не знаю, какие из них.

Есть мысли?

1 Ответ

0 голосов
/ 11 ноября 2009

Что если у вас была программа, которая экспортировала бы javascript в файлы на диске, а затем импортировала их обратно в базу данных, как только вы закончили их редактирование в Visual Studio? Это может быть самый простой способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...