Как ссылаться на пространство имен из конкретной сборки?
Итак, вот моя проблема.
- Проект My (test) ссылается как на Castle Windsor, так и на Rhino Mocks.
- Я создаю класс, который реализует Castle.Core.Interceptor.IInterceptor из сборки Castle.Core.dll.
- При создании Rhino Mocks Айенде использовал Castle.Core.Interceptor и включает в себя полное пространство имен darn внутри Rhino.Mocks.dll
Поэтому, когда я пытаюсь построить, я получаю сообщение об ошибке
Тип 'Castle.Core.Interceptor.IInterceptor' существует в обоих 'c:...\Libraries\Rhino.Mocks.dll' и 'C:...\Библиотеки\Castle.Core.dll
Как я могу указать, что я хочу использовать экземпляр IInterceptor из файла Castle.Core.dll, а не тот, который включен в Rhino Mocks?
Ответы
Ответ 1
Оставьте конкретный ответ здесь, если кто-то придет позже.
Из статьи здесь.
- Выберите одну из двух сборок в ссылках проекта (в моем случае я выбрал Castle.Core). Нажмите F4, чтобы открыть свойства и ввести псевдоним CastleCore.
- В верхней части проблемного файла cs поместите
extern alias CastleCore;
- Укажите свой класс с помощью
CastleCore::Castle.Core.Interceptors.IInterceptor
. Или в моем случае я просто сделал:
используя cci = CastleCore:: Castle.Core.Interceptors;
и теперь может ссылаться на
cci.IInterceptor
Ответ 2
Вы можете использовать extern alias
для псевдонима одной из сборок, чтобы предотвратить неоднозначность.