Comment référencer un espace de noms à partir d’un assembly spécifique?

Alors voici mon problème.

  • Mon projet (test) fait référence à la fois à Castle Windsor et à Rhino Mocks.
  • Je crée une classe qui implémente Castle.Core.Interceptor.IInterceptor à partir de l’assembly Castle.Core.dll
  • Dans la construction de Rhino Mocks, Ayende a utilisé Castle.Core.Interceptor et inclut tout l’espace de noms darn à l’intérieur de Rhino.Mocks.dll.

Alors quand j’essaie de construire, j’obtiens l’erreur

Le type ‘Castle.Core.Interceptor.IInterceptor’ existe à la fois dans ‘c: … \ Libraries \ Rhino.Mocks.dll’ et ‘c: … \ Libraries \ Castle.Core.dll’

Comment puis-je spécifier que je veux utiliser l’instance IInterceptor de Castle.Core.dll plutôt que celle incluse dans Rhino Mocks?

Jetons la réponse spécifique ici au cas où quelqu’un viendrait plus tard. De l’article ici .

  • Sélectionnez l’un des deux assemblys sous les références du projet (dans mon cas, j’ai sélectionné Castle.Core). Hit F4 pour faire apparaître les propriétés et entrez alias CastleCore
  • Au sumt du fichier cs problématique, mettez extern alias CastleCore;
  • Référencez votre classe avec CastleCore::Castle.Core.Interceptors.IInterceptor . Ou dans mon cas j’ai simplement fait:

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

et peut maintenant faire référence

 cci.IInterceptor 

Vous pouvez utiliser un extern alias pour alias l’un des assemblys afin d’éviter toute ambiguïté.