У меня есть простой пример из Интернета, который отлично работает в среде .NET 3.5 с использованием System.ComponentModel.Composition.dll версии v2.0.50727
Я изменил определение проекта и изменил цель на .NET 4.0, и она отлично работает.
Когда я заменяю вышеприведенную DLL-версию v2.0.50727 на последнюю версию, v4.0.30319 , я получаю сообщение об ошибке при компоновке контейнера. Код, где он ломается, выглядит следующим образом:
private void LoadPlugins() {
var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
var container = new CompositionContainer(catalog);
container.ExportsChanging += new EventHandler(container_ExportsChanging);
var batch = new CompositionBatch();
batch.AddPart(this);
container.Compose(batch); // throws Exception
}
И исключением является следующее:
System.ComponentModel.Composition.ChangeRejectedException was unhandled
Message=The composition remains unchanged. The changes were rejected because of the following error(s): The composition produced a single composition error. The root cause is provided below. Review the CompositionException.Errors property for more detailed information.
1) More than one export was found that matches the constraint '((exportDefinition.ContractName == "MefTutorial.IPlugin") AndAlso (exportDefinition.Metadata.ContainsKey("ExportTypeIdentity") AndAlso "MefTutorial.IPlugin".Equals(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))'.
Resulting in: Cannot set import 'MefTutorial.PluginConsumer._myPlugins (ContractName="MefTutorial.IPlugin")' on part 'MefTutorial.PluginConsumer'.
Element: MefTutorial.PluginConsumer._myPlugins (ContractName="MefTutorial.IPlugin") --> MefTutorial.PluginConsumer
Что мне нужно сделать, чтобы перейти на .NET 4.0 в отношении MEF ?