Как ссылаться на пространство имен из конкретной сборки?

Итак, вот моя проблема.

  • Мой (тестовый) проект ссылается как на Castle Windsor, так и на Rhino Mocks.
  • Я создаю класс, который реализует Castle.Core.Interceptor.IInterceptor из сборки Castle.Core.dll.
  • При создании Rhino Mocks Айенде использовал Castle.Core.Interceptor и включил все чертово пространство имен внутри Rhino.Mocks.dll.

Поэтому, когда я пытаюсь построить, я получаю сообщение об ошибке

Тип «Castle.Core.Interceptor.IInterceptor» существует как в «c:...\Libraries\Rhino.Mocks.dll», так и в «c:...\Libraries\Castle.Core.dll».

Как тогда мне указать, что я хочу использовать экземпляр IInterceptor из Castle.Core.dll, а не экземпляр, включенный в Rhino Mocks?


person George Mauer    schedule 05.02.2009    source источник


Ответы (2)


Давайте бросим конкретный ответ здесь на случай, если кто-то придет позже. Из статьи здесь.

  • Выберите одну из двух сборок под ссылками на проект (в моем случае я выбрал Castle.Core). Нажмите F4, чтобы вызвать свойства, и введите псевдоним CastleCore.
  • Вверху проблемного файла cs поставить extern alias CastleCore;
  • Ссылайтесь на свой класс с помощью CastleCore::Castle.Core.Interceptors.IInterceptor. Или в моем случае я просто сделал:

используя cci = CastleCore::Castle.Core.Interceptors;

и теперь может ссылаться

cci.IInterceptor
person George Mauer    schedule 05.02.2009
comment
В моем случае я не могу ввести псевдоним в разделе свойств при нажатии F4, поэтому я нашел решение добавить псевдоним в .csproj stackoverflow.com/questions/32201437/ - person Mayer Spitz; 10.04.2019

Можно использовать extern alias для псевдоним одной из сборок, чтобы предотвратить двусмысленность.

person Andrew Hare    schedule 05.02.2009