exe и dll ссылаются на dll с тем же именем и тем же пространством имен - PullRequest
2 голосов
/ 28 декабря 2011

У меня следующая проблема:
У меня есть два проекта в одном решении, например Core.prj и Extension.prj.
Теперь Core.prj ссылается на dll с именем profile.dll (v1), а Extension.prj ссылается на dll с тем же именем и тем же пространством имен, но с другой версией profile.dll (v2). Extension.prj также ссылается на Core.prj проект.
Core.prj имеет исходный файл, например A.cs с некоторыми виртуальными методами, определенными в нем. Extension.prj имеет исходный файл, например B.cs, который имеет некоторые методы, переопределяющие виртуальные методы, определенные в A.cs из Core.prj.

Моя идея состояла в том, чтобы собрать и запустить Extension.prj и вызывать виртуальные методы в A.cs из переопределенных методов в B.cs. Теперь методы в B.cs будут использовать типы из profile.dll (v2), а методы в A.cs будут использовать типы из profile.dll (v1), но это невозможно, поскольку виртуальные методы из A.cs используют типы из profile.dll (v2), а не из profile.dll (v1).

Является ли эта идея ссылаться на разные версии dll с одинаковыми именами и пространством имен из exe и dll в любом случае?

1 Ответ

1 голос
/ 28 декабря 2011

Я думаю, что в этом случае вы можете использовать директиву extern alias.

Из MSDN:

Чтобы сослаться на две сборки с одинаковыми полными именами типов, псевдоним должен быть указан в командной строке следующим образом:

/ г: GridV1 = grid.dll

/ г: GridV2 = grid20.dll

Это создает внешние псевдонимы GridV1 и GridV2. Чтобы использовать эти псевдонимы из программы, ссылки на них с помощью внешнего ключевое слово. Например:

внешний псевдоним GridV1;

внешний псевдоним GridV2;

http://msdn.microsoft.com/en-us/library/ms173212.aspx

...