2010-09-27 52 views
1

我有一個解決方案,其中包含許多項目都使用相同的根名稱空間。沒有代碼文件顯式地命名一個名稱空間。因此,可以說根名稱空間是ExampleRootNamespaceVB.NET命名空間問題有關明確(命名)與隱式(全局或根)名稱空間

現在,當我想將明確命名的命名空間添加到我正在處理的其中一個代碼文件中時,就會出現問題。我希望能夠將該代碼從程序集的其餘部分中分離出來,以便能夠對它運行FxCop。所以我在代碼文件中加入了類似Namespace Interfaces.CSV的東西。

這會導致引用此程序集的任何代碼需要說Imports ExampleRootNamespace.Interfaces.CSV。到現在爲止還挺好。我甚至可以對組件運行FxCop。現在的問題是,在其他組件,我不能說任何更長的東西,如:

Public class frmInputBoolean Inherits 
ExampleRootNameSpace.frmFormTemplate 

的Visual Studio現在要求我重新命名的命名空間:

Public class frmInputBoolean Inherits 
    Global.ExampleRootNameSpace.frmFormTemplate 

有數以百計的錯誤與此有關。所以我的問題是:

1)爲什麼基本上會在根目錄下命名空間首次導致程序問題?

2)有沒有任何解決方法來解決這個問題,而不重命名?

我也想補充一點,關於ExampleRootNamespace.Interfaces.CSV我沒有在代碼庫中的任何地方引用它。我目前只是從單元測試項目中引用它。所以我不明白爲什麼添加這個命名空間會導致問題。

回答

1

那麼存在你,看來這可能是在Visual Studio 2008中,但一個bug正如代碼並沒有改變與所需的問題Global前綴不再存在。

我這樣說是因爲我查出來有問題的代碼文件中的一個,並試圖增加(如Meakins建議):

Imports ExampleRootNamespace = Global.ExampleRootNamespace 

當我這樣做兩件事情。

1)錯誤突出顯示和錯誤糾正建議已被刪除,並且VisualRoot可識別ExampleRootNamespace。此外,代碼現在編譯。

2)Imports ExampleRootNamespace = Global.ExampleRootNamespace由於在導入語句中使用Global而無效。視覺工作室說:「'全球'不允許在這種情況下,標識符預計。」這意味着這行代碼不會編譯。所以我把它們一起移除。奇怪的是,儘管它沒有在那裏(因此代碼返回到以前)沒有更多的錯誤。

我也重新啓動了視覺工作室(但是在做完上述之後)。如果你問我,這很奇怪!

1

在C#中嘗試利用USING運算符與您的名稱空間。

using ExampleRootNamespace = newExampleRootNamespace; 

在有全球性問題的。

可悲的是,我不相信一個簡單的解決方案在VB.NET

+0

在Vb中它將是Imports。我建議「Imports ExampleRootNamespace = Global.ExampleRootNamespace」http://msdn.microsoft.com/en-us/library/7f38zh8x(VS.71).aspx – MarkJ 2010-09-27 14:34:12

+0

這將無法正常工作,因爲您無法使用「全局」進口報表。看到我自己的回答這個線程。感謝Meakins和MarkJ的建議。它確實有助於讓代碼進行編譯。 – Matt 2010-09-27 14:40:49