2013-04-05 12 views
1

В C# у меня есть application.exe, в котором используется library.dll (ссылка на компиляцию). Теперь library.dll используется для связи с некоторыми аппаратными средствами, которые очень медленны. Можно ли создать еще один проект в визуальной студии, который также создаст library.dll, но это был бы макет. Я хочу иметь возможность просто заменить файл dll без перекомпиляции exe или замены ссылки в visual studio. Я знаю, что могу загрузить DLL во время выполнения, но можно заменить DLL статически ссылается, не вызывая:Как издеваться над статической ссылкой?

FileLoadException: The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

(я не использую сильные имена)

+0

Сколько различных классов вы ссылаетесь в library.dll? – Seb

+0

DLL содержит внутренний класс, который реализует интерфейс (определенный в другом месте). Он также содержит общедоступную статическую фабрику, которая правильно создает внутренний класс. У макета также был бы заводский класс с той же подписью, возвращающей тот же интерфейс, но вместо этого он создавал бы вместо этого класс макета. – Eiver

+0

Можете ли вы изменить дизайн, чтобы application.exe ссылался на интерфейс, но не на библиотеку.dll? Если это так, вы можете использовать легкий контейнер, например, пружину. У вас не было бы ссылки ни на library.dll, ни на макет. – Seb

ответ

0

будет будет пита , пытаясь имитировать dll только для насмешливой цели.

Я предлагаю вам включить функцию в свой код, флаг, указывающий, что код должен работать как макетный режим, который вообще не будет вызывать/вызывать dll/reference.

Смежные вопросы