如何从特定的程序集中引用一个命名空间?

33

我的问题是这样的:

  • 我的(测试)项目引用了Castle Windsor和Rhino Mocks。
  • 我正在创建一个类,该类实现来自Castle.Core.dll程序集的Castle.Core.Interceptor.IInterceptor接口。
  • 在构建Rhino Mocks时,Ayende使用了Castle.Core.Interceptor并在Rhino.Mocks.dll中包含整个命名空间。

所以当我尝试构建时,就会出现以下错误:

The type 'Castle.Core.Interceptor.IInterceptor' exists in both 'c:...\Libraries\Rhino.Mocks.dll' and 'c:...\Libraries\Castle.Core.dll'

那么,我如何指定要使用来自Castle.Core.dll而不是Rhino Mocks中包含的IInterceptor实例呢?

2个回答

53

让我们在这里放置具体的答案,以防后来有人来看。来自文章here

  • 在项目引用下选择两个程序集之一(在我的情况下,我选择了Castle.Core)。按F4键打开属性并输入别名CastleCore
  • 在有问题的cs文件顶部放置extern alias CastleCore;
  • 使用CastleCore::Castle.Core.Interceptors.IInterceptor引用您的类。或者在我的情况下,我只是这样做:

使用cci = CastleCore::Castle.Core.Interceptors;

现在可以引用。

cci.IInterceptor

在我的情况下,当按 F4 键时无法在属性部分输入别名,因此我找到了一个解决方案,在 .csproj 中添加别名名称。https://dev59.com/yVwY5IYBdhLWcg3wyqaH#55620553 - Mayer Spitz

7
您可以使用 extern alias 来为其中的一个程序集设置别名,以避免歧义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接