Как я могу предоставить API-заглушку для компонента MEF?
Visual Studio 2010 SDK поставляется со многими сборками, такими как Microsoft.VisualStudio.Text.Data и Microsoft.VisualStudio.Text.UI, которые являются просто заглушками. Чтобы написать расширение для Visual Studio, вы ссылаетесь на эти сборки, но устанавливаете свойства "Копировать локальную" и "Точная версия" ссылок на false. Когда ваше расширение загружается в Visual Studio, ссылки привязываются к ранее загруженной внутренней реализации этих сборок в Visual Studio.
Я хотел бы предоставить новый экспортируемый компонент MEF, который действует как служба Visual Studio, что другие пакеты MEF могут [Import]
, Чтобы использовать сервис, другие компоненты должны будут ссылаться на мой пакет, но я предпочитаю, чтобы они ссылались на заглушку, чтобы я мог вносить изменения во внутреннюю реализацию моего сервиса, не нарушая другие пакеты, ссылающиеся на него. Как я могу предоставить сборку-заглушку, содержащую общедоступные компоненты API из некоторой произвольной сборки, чтобы при обращении к заглушке она без проблем работала с предоставленной реализацией во время выполнения?
1 ответ
Я решил эту проблему, создав две сборки:
- MyCompany.VisualStudio.Feature: Интерфейсы и в некоторых случаях абстрактные классы для упрощения наиболее распространенных реализаций. нет
[Export]
здесь. - MyCompany.VisualStudio.Feature.Implementation: Реализует службы, связанные с этой функцией. Здесь вы увидите
[Export]
s.
Люди, использующие мою функцию, просто ссылаются на первую и устанавливают для параметра "Копировать локальную" и "Точную версию" значение false.