2009-11-23 6 views
1

Visual Studio 2010 SDK поставляется с множеством сборок, таких как Microsoft.VisualStudio.Text.Data и Microsoft.VisualStudio.Text.UI, которые являются просто заглушками. Чтобы написать расширение для Visual Studio, вы ссылаетесь на эти сборки, но устанавливаете свойства «Копировать локальную» и «Точная версия» ссылок на false. Когда ваше расширение загружается в Visual Studio, ссылки привязаны к ранее загруженной внутренней реализации Visual Studio этих сборок.Как я могу предоставить заглушку API для компонента MEF?

Я хотел бы предоставить новый экспортированный MEF компонент, который действует как служба Visual Studio, которую могут использовать другие пакеты MEF [Import]. Чтобы использовать эту услугу, другим компонентам необходимо будет ссылаться на мой пакет, но я предпочитаю, чтобы они ссылались на заглушку, поэтому я могу внести изменения во внутреннюю реализацию моего сервиса, не нарушая другие пакеты, которые ссылаются на него. Как я могу предоставить сборку «заглушки», содержащую общедоступные компоненты API, из какой-либо произвольной сборки, так что если вы ссылаетесь на заглушку, она будет без проблем работать с предоставленной реализацией во время выполнения?

ответ

1

Я решил эту проблему путем создания двух сборок:

  • MyCompany.VisualStudio.Feature: Интерфейсы и в некоторых случаях абстрактных классов для упрощения наиболее распространенных реализаций. No [Export] s здесь.
  • MyCompany.VisualStudio.Feature.Implementation: Осуществляет услуги, связанные с этой функцией. Здесь вы увидите [Export] s.

Люди, использующие мою функцию, просто ссылаются на прежние и устанавливают Копировать локальную и точную версию в false.