我正在将项目从C#转换为Visual Basic,而VB.NET中的命名空间表现得很奇怪。有某种隐藏的默认命名空间,这很烦人。我希望它的行为与C#完全相同,它可以按预期工作 - 进入你为它们创建的命名空间。
我一直在说它
using MyClassLibrary;
在C#中,在VB中
Imports MyClassLibrary
Imports MyClassLibrary.MyClassLibrary
但是让功能相同,也是合乎逻辑的。
另一个更大的问题是,我有一个.tt文件,而C#项目在VB的不同命名空间中生成代码。
是否有一些解决方案可以使两者在命名空间方面表现相同?
答案 0 :(得分:6)
检查VB项目选项中的根命名空间。请清除它。
这与C#项目中的默认命名空间不同。如果在C#项目中更改默认命名空间,则现有文件不会更改。但是,如果您在VB项目中更改Root命名空间,则会影响所有现有成员。
答案 1 :(得分:1)
我只能得出结论,虽然从VB.NET中删除根命名空间的上述答案似乎有效,并且可能适用于某些解决方案来模仿C#处理命名空间的方式,其他文件如实体设计器文件和自动生成代码和模板命名空间的行为方式不同,如果不将它们分开,就无法改变它们的行为。以这种方式完成我的一次转换之后,我遇到了一些问题,其中一些文件以与C#不同的方式定义了自己的命名空间,我认为最好是使用内置的visual basic怪癖,而不是尝试绕过它们。
答案 2 :(得分:0)
检查项目的属性,有一个默认的命名空间选项,可以在VB项目中设置,但不能在C#中设置。除了VB的“我的”命名空间之外,命名空间在各种语言中的行为应该相同。