Может ли приложение MEF, построенное на .NET 4, импортировать типы, созданные на основе .NET 3.5? - PullRequest
2 голосов
/ 04 августа 2010

Я занимаюсь разработкой хост-приложения с использованием Managed Extensibility Framework, и оно построено на основе .NET 4 и сборки System.ComponentModel.Composition, встроенной в эту среду.Я хотел бы поддержать возможность разработки деталей с использованием .NET 3.5 и их декларативного экспорта.

Поскольку атрибуты экспорта являются новыми в .NET 4 и, следовательно, не могут ссылаться на сборку .NET 3.5, яНе уверен, что лучший способ экспортировать детали.Существует ли простой способ сделать это без внедрения нового типа каталога, который использует какой-то другой механизм для обнаружения экспорта?

Ответы [ 2 ]

2 голосов
/ 05 августа 2010

Вы можете написать обработчик для AppDomain.AssemblyResolve , который будет возвращать версию MEF .NET 4 при запросе версии 3.5. Однако написанный вами обработчик будет использоваться только в том случае, если он не сможет найти сборку, используя логику привязки по умолчанию, поэтому вам нужно убедиться, что библиотека 3.5 MEF недоступна, или, возможно, загрузить сборки расширения без контекста ( см. Здесь ), чтобы предотвратить его преобразование в эту DLL.

0 голосов
/ 04 августа 2010

Возможно, вы сможете использовать Redirect Binding Redirect для компиляции расширений с использованием версии MEF .NET 3.5, но с использованием версии .NET 4 во время выполнения.

...