2011-05-06 121 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