Я внедрил систему плагинов в .NET.Базовая библиотека реализует базовые классы и интерфейсы, предоставляемые подключаемым модулям, библиотеки подключаемых модулей связывают базовую библиотеку для использования предоставляемых классов и интерфейсов.
Проблема, с которой я сталкиваюсь, заключается в (простой) перекомпиляции базовой библиотеки (с изменениями или без) приводят к тому, что плагины не могут быть загружены, выдавая сообщение об исключении:
"Could not load file or assembly 'BaseLibrary, Version=0.0.1.68, Culture=neutral, PublicKeyToken=7b445b12e635292c' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)"
Эта проблема решается путем одновременной компиляции базовой библиотеки и библиотек плагинов, но это не оченьудобен во время разработки, поскольку на этом этапе я довольно часто изменяю базовую библиотеку.
Если есть какой-либо метод для "ослабления" двоичного сопоставления?
Возможно ли, что информация о сборке базовой библиотеки (цитируется ниже)) может быть причиной проблемы?
[assembly: AssemblyVersion("0.0.1.*")]
Я забыл упомянуть, что сборки подписаны.
Сборки загружаются с использованием следующей процедуры
Assembly hLibrary = Assembly.LoadFile(pPath);
Type plugImageCodecFactoryType = hLibrary.GetType("Derm.ImageCodecPluginFactory", true, false);
object plugImageCodecFactory = Activator.CreateInstance(plugImageCodecFactoryType);
object plugInstance;
MethodInfo plugFactoryCreate = plugImageCodecFactoryType.GetMethod("CreatePlugin", BindingFlags.Instance|BindingFlags.Public);
plugInstance = plugFactoryCreate.Invoke(plugImageCodecFactory, null);
if (plugInstance is IImageCodecPlugin)
RegisterPlugin((IImageCodecPlugin)plugInstance);