2009-02-05 3 views
24

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

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

Так что, когда я пытаюсь построить, я получаю ошибку

Тип 'Castle.Core.Interceptor.IInterceptor' существует в обоих «C: ... \ Библиотеки \ Rhino.Mocks.dll 'и «C: ... \ Библиотеки \ Castle.Core.dll»

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

+0

Я считаю, что отвечает [здесь] (http://blogs.msdn.com/abhinaba/archive/2005/11/30/498278.aspx). – Bearddo

ответ

38

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

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

cci = CastleCore :: Castle.Core.Interceptors;

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

cci.IInterceptor 
7

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

+0

Ничего себе, немного информации там да? Я не уверен, что это применимо, но в нем говорится, что вы должны делать что-то в командной строке. Googling для получения дополнительной информации ... –

+0

Извините, что - Beardo предоставил гораздо лучшую ссылку –

+1

Это было здесь еще лучше: http://blogs.msdn.com/ansonh/archive/2006/09/27/774692.aspx –

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