2009-02-05 13 views
24

Así que aquí está mi problema.¿Cómo hacer referencia a un espacio de nombres de un ensamblaje específico?

  • Mi (prueba) proyecto hace referencia tanto a Castle Windsor como a Rhino Mocks.
  • Estoy creando una clase que implementa Castle.Core.Interceptor.IInterceptor del conjunto Castle.Core.dll
  • En la construcción de burla de Rhino, Ayende utiliza Castle.Core.Interceptor e incluye todo el espacio de nombres en el interior del polígono industrial de Rhino. Mocks.dll

Así que cuando trato de instalar, me sale el error

el tipo existe 'Castle.Core.Interceptor.IInterceptor' en ambos 'c: ... \ Libraries \ Rhino.Mocks.dll 'y 'C: ... \ Libraries \ Castle.Core.dll'

Entonces, ¿cómo puedo especificar que quiero utilizar la instancia IInterceptor del Castle.Core.dll en lugar del que viene incluido en la burla de Rhino ?

+0

Creo que es contestada [aquí] (http://blogs.msdn.com/abhinaba/archive/2005/11/30/498278.aspx). – Bearddo

Respuesta

38

Echemos la respuesta específica aquí en caso de que alguien se presente más tarde. Del artículo here.

  • Seleccione uno de los dos conjuntos bajo las referencias del proyecto (en mi caso seleccioné Castle.Core). Hit F4 para abrir las propiedades y entrar alias CastleCore
  • En la parte superior del archivo cs problemática puso extern alias CastleCore;
  • de referencia de su clase con CastleCore::Castle.Core.Interceptors.IInterceptor. O en mi caso, simplemente lo hice:

usando cci = CastleCore :: Castle.Core.Interceptors;

y ahora puede hacer referencia a

cci.IInterceptor 
7

Puede usar un extern alias para alias uno de los conjuntos para evitar la ambigüedad.

+0

Guau, no hay mucha información, ¿eh? Aunque no estoy seguro de que esto se aplique, dice que tienes que hacer cosas en la línea de comando. Google buscando más información ... –

+0

Lo siento - Beardo proporcionó un enlace mucho mejor –

+1

Esto aquí fue aún mejor: http://blogs.msdn.com/ansonh/archive/2006/09/27/774692.aspx –

Cuestiones relacionadas