2011-05-06 73 views
1

当我向VB.NET项目中添加一个3party库(Gibraltar.Agent)时,我得到了干扰我当前代码的命名空间。隐藏第3方空命名空间

例如命名空间Gibraltar.Agent.IS使得下面的代码无效:

Assert.That("bla", [Is].EqualTo("bla")) 

作为一个解决方案,我必须完全限定[是]

Assert.That("bla", Nunity.Frameworks.Is.EqualTo("bla")) 

而且讨厌的就是“我“命名空间,这使得无效:

For i = 0 to 10 'valid without referencing Gibraltar.Agent 
    For i as Integer = 0 to 10 'needed change after adding Gibraltar.Agent 

如何隐藏不需要的3Party名称空间ES?

enter image description here

编辑

  • 我没加任何直布罗陀的命名空间。
  • 下并没有帮助:

    Imports [Is] = NUnit.Framework.Is 
    

回答

1

这些奇怪的命名空间是由旧版本VistaDB使用的混淆库创建的,该版本已被ILMerged加入直布罗陀代理。混淆器将用于VistaDB命名空间的两个字符符号替换以节省空间。

我们去年收购了VistaDB,现在可以自由地修改其内部结构和构建流程。直布罗陀3.0将解决通过名称空间泄漏的问题。

周杰伦Cincotta
方正
Gibraltar Software

+0

它消失了!我们在2012年3月31日发售的直布罗陀3.0中杀死了所有这些。 – 2012-06-20 19:42:55

1

只是不要Import该命名空间中的文件。如果您在过去的某个时间激活该名称空间以包含在项目设置中,则可能需要更改项目设置。

但根据the documentation甚至不存在令人反感的名称。

+0

不,我没有导入命名空间。我只是引用程序集并立即出现编译器错误。当我查看“引用”下方的项目设置时,与直布罗陀相关的命名空间也不会被检查。 – Robert 2011-05-06 12:16:57

+0

@罗伯特嗯。在这种情况下,摆脱图书馆或抱怨维护者。这是图书馆不可接受的行为。 – 2011-05-06 12:18:28

+0

@Konrad:我真的很喜欢这个产品!我看不出他们做错了什么。行为是完全意想不到的,因为名字空间没有被导入。它只是没有任何意义! – Robert 2011-05-06 12:26:59

2

您可以创建一个新的类库并在您使用的Gibraltar.Agent功能周围创建wrappers,然后从其他项目中直接引用此类库而不是Gibraltar.Agent。另请参阅Adapter pattern

+0

是的,这将工作,我喜欢它的好主意!我保持这个问题的开放性,因为这是一个解决方案,我想看看是否有解释这个问题的方法 - 这看起来很奇怪 - 至少从我的角度来看。 – Robert 2011-05-06 12:36:34