问题
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?
回答1:
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
回答2:
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