Как можно настроить Visual Studio 2012 на использование настраиваемого инструмента для настройки чтения/записи существующих редакторов?


Обновление: похоже, что у VS нет крючков, необходимых для того, чтобы делать то, что необходимо в моем случае использования. Однако есть несколько вариантов, которые могут работать для других людей, и поэтому я отмечаю вопрос как ответ, но мне бы хотелось найти решение, которое работает для меня.


У нас есть зашифрованные файлы, которые обычно хранятся в зашифрованном виде в исходном управлении (TFS). Когда я хочу сравнивать версии, я использую Beyond Compare и добавил инструмент шифрования/дешифрования как фильтр для процесса чтения/записи, чтобы разрешить просмотр и редактирование обычного текста.

Однако, если я просто хочу открыть файл для чтения/редактирования, это немного утомительно, используя фиктивное сравнение только для просмотра/редактирования файла.

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

Edit: * NB: Аспект шифрования - это всего лишь одноразовый случай *, я действительно ищу общий ответ, который не требует написания редактора, чтобы заменить редакторов в VS, которые уже существуют, например, XML-редактор XML или пользовательский третий партийных.

У меня есть как пользовательские, так и нестандартные файлы, которые зашифрованы. У каждого типа файла есть редактор. У нас нет доступа к источнику для любого из этих редакторов. Проблема в том, что файл зашифрован в TFS, и все, что мне нужно, это фильтрация на чтение и запись для всех файлов независимо от редактора.

Я хочу использовать все существующие функции установленных редакторов без изменений. Только чтение и письмо необходимо настроить.

Ответ 1

Вот потенциально хакерский способ добиться того, что вы пытаетесь сделать, если нет другого простого варианта.

TFS хранит данные в базе данных SQL. Поэтому теоретически можно модифицировать команду чтения/редактирования, которая используется для извлечения данных из TFS и отправки их в редактор/просмотрщик. Это может быть связано с модификацией хранимой процедуры или установкой триггера для изменения данных до того, как он будет представлен редактору.

Вам нужно будет запустить трассировку Profiler в базе данных TFS, когда вы нажмете на edit/view или перейдите к node в дереве управления версиями. Это поможет вам выяснить, какие данные TFS обращаются и какие функции/сохраненные procs/tables и т.д. Используются для извлечения указанных данных.

То же самое в обратном порядке; вам нужно будет изменить "запись" данных, чтобы использовать свой собственный инструмент перед тем, как поместить его в БД.

SQL имеет возможность вызывать код CLR, поэтому вы можете использовать свой инструмент, если он написан на .NET.

Ответ 2

Самый простой способ - загрузить SDK 2012 года, Microsoft уже предлагает хорошее руководство по реализации настраиваемого редактора ЗДЕСЬ.

Процесс:

  • Установите SDK
  • Запустите VS2012; Выберите Новый проект → Другие типы Proj → Пакет Visual Studio
  • Visual С#, название компании и т.д.
  • Отметьте галочку "Пользовательский редактор"
  • Заполните остальные детали.

Итак, теперь вы получаете весь источник текстового редактора ванили, а частью, к которой вы хотите подключиться, являются функции IPersistFileFormat:: Load() и IPersistFileFormat:: Save(), найденные в EditorPane.cs и поместите свои процедуры шифрования/дешифрования там, таким образом, вы останетесь с текстовым редактором с пользовательским зашифрованным файловым форматом.

Ответ 3

Это может не делать то, что вам нужно, поскольку вам нужно позвонить в сторонний exe. Однако этот ответ может быть полезен другим, имеющим доступ к исходному коду (или DLL или библиотеке).

Вы можете написать фильтр файловой системы, который шифрует/дешифрует данные на диск и с него. Обратите внимание, что драйвер находится на уровне ОС и находится вне Visual Studio.

Из статьи MSDN Файловые системы и файловые фильтры фильтра:

Драйвер фильтра файловой системы перехватывает запросы, нацеленные на файловую систему или другой драйвер фильтра файловой системы. Перехватывая запрос до того, как он достигнет намеченной цели, драйвер фильтра может расширить или заменить функциональность, предоставленную исходной целью запроса. Примеры файловых систем и фильтров файловой системы включают в себя антивирусные фильтры, агенты резервного копирования и продукты шифрования.

См. эту статью проекта кода для учебника: Учебник по драйверу фильтра файловой системы. В статье не показано, как выполнять шифрование/дешифрование, но показано, как запустить и запустить простой драйвер.

Ответ 4

Существуют расширения, которые будут захватывать события в текущем окне, например, и то, что оказывается загрузкой документа. ** Это не настраиваемый редактор **

проверьте следующие две ссылки:

http://msdn.microsoft.com/en-us/library/dd885244.aspx

и довольно полное дополнение с открытым исходным кодом, которое работает с файлами при сохранении (независимо от типа)

https://bitbucket.org/s_cadwallader/codemaid/src/7cf1bf6108801f48b85e30d85e1646fbc73ba889/CodeMaid/Integration/Events/RunningDocumentTableEventListener.cs?at=default

который перехватывает таблицу RDT для расширения текущей среды. Конечно, вам нужно будет откорректировать, но это должно заставить вас идти в правильном направлении.