So here is my problem.
- My (test) project references both Castle Windsor and Rhino Mocks.
- I am creating a class which implements Castle.Core.Interceptor.IInterceptor from the Castle.Core.dll assembly
- In building Rhino Mocks, Ayende used Castle.Core.Interceptor and includes the whole darn namespace inside the Rhino.Mocks.dll
So when I try to build, I get the error
The type 'Castle.Core.Interceptor.IInterceptor' exists in both 'c:...\Libraries\Rhino.Mocks.dll' and 'c:...\Libraries\Castle.Core.dll'
How then do I specify that I want to use the IInterceptor instance from the Castle.Core.dll rather than the one included in Rhino Mocks?
Let's throw the specific answer up here in case someone comes along later. From article here.
- Select one of the two assemblies under project references (in my case I selected Castle.Core). Hit F4 to bring up properties and enter alias CastleCore
- At the top of the problematic cs file put
extern alias CastleCore; - Reference your class with
CastleCore::Castle.Core.Interceptors.IInterceptor. Or in my case I simply did:
using cci = CastleCore::Castle.Core.Interceptors;
and can now reference
cci.IInterceptor
You can use an extern alias to alias one of the assemblies to prevent the ambiguity.
来源:https://stackoverflow.com/questions/517058/how-to-reference-a-namespace-from-a-specific-assembly