2010-03-04 52 views
2

我將項目從C#轉換爲Visual Basic,並且VB.NET中的命名空間以奇怪的方式運行。有一種隱藏的默認命名空間,它很煩人。我希望它的行爲與C#完全相同,它按預期工作 - 事物進入你爲它們創建的命名空間。如何讓VB.NET命名空間的行爲像C#一樣?

我已經得到它周圍通常說

using MyClassLibrary; 

在C#和VB中

Imports MyClassLibrary 
Imports MyClassLibrary.MyClassLibrary 

但它會是不錯的功能是相同的,也就順理成章了。

另一個更大的問題是,我有一個.TT文件,以及C#項目在不同的命名空間的一個VB生成的代碼。

是否有一些解決方案使兩者的命名空間相同?

+0

您在模板文件中指定了哪些名稱空間?你指定了什麼輸出語言? C#或VB? – 2010-03-04 11:35:25

+0

模板文件是自動生成的,並命名空間是沒有明確規定:昏暗namespaceName作爲字符串= IF(code.VsNamespaceSuggestion(),GetObjectNamespace(ModelNamespace)) – NibblyPig 2010-03-04 11:48:11

回答

0

我只能得出結論,雖然從VB.NET中刪除根名稱空間的上述答案看起來可行,並且可能適用於某些解決方案以模仿C#處理名稱空間的方式,其他文件(如實體設計器文件和自動生成的代碼&模板名稱空間的行爲不同,並且不能改變它們的行爲而不會破壞它們。以這種方式進行了一次轉換之後,我遇到了一些以不同於C#的方式定義自己的命名空間的文件的麻煩,因此我決定最好使用內置的visual basic特性,而不是嘗試繞過他們。

0

檢查項目的屬性,有可能在VB項目設置,但不是C#一個默認命名空間的選項。除VB之外的「我的」命名空間,名稱空間在各種語言中應該表現相同。在VB項目選項

+0

我沒有看到任何地方默認命名空間選項... – NibblyPig 2010-03-04 11:06:29

+0

我相信它可能在VB中被稱爲「Root Namespace」,它們都在項目屬性的Application選項卡中,位於右上角。 – 2010-03-04 11:10:59

+0

我仍然遇到問題,我的.tt文件自動生成具有與C#解決方案不同名稱空間的代碼......有關於此的任何想法? C#的解決方案產生的命名空間MyClassLibrary這是正確的,但VB的解決方案產生不同的命名空間中使用我的類庫有進口MyClassLibrary和MyClassLibrary.MyOtherNamespace – NibblyPig 2010-03-04 11:20:44

6

檢查根命名空間。只需清除它。

這是不一樣的,如C#項目默認命名空間。如果更改C#項目中的默認命名空間,現有文件不會更改。但是,如果您在VB項目中更改了Root命名空間,這將影響所有現有的成員。

+0

澄清;這其實是一樣的,對嗎?這只是一個消失,重構現有的文件,而另一個不是? – 2010-03-04 11:15:59

+0

由於命名空間是默認設置的,我看不出它是如何相同的。 – NibblyPig 2010-03-04 11:26:42

+1

@pezi:沒有,它不重構文件...但是當你編譯項目(如通過命令行而不是單個文件)編譯器預先將根命名空間的所有命名空間(即使源文件未指定任何命名空間)。 – 2010-03-04 11:28:23