在C#中创建文件夹时,进入该文件夹的所有类都将作为其命名空间位于文件夹名称下。或者,使用namespace
关键字,我们可以手动定义它们。但是在我创建文件夹的VB中,这不是自动完成的。假设我想添加一个Entity Framework对象,它属于默认命名空间。然后,如果在EF中有登录表,我就不能有一个名为Login的窗口。这会导致很多问题。如何更改edmx文件的命名空间?并防止VB中的命名空间冲突?
答案 0 :(得分:0)
VB.Net有'我们称之为Root Namespace
的东西。 C#有default namespace
的地方。
最大的区别在于Root Namespace
实际上是根,因此总是会在您在代码文件中定义的所有内容之前添加。
namespace
语句添加到您的代码文件中。它还将使用foldername来构建完整的命名空间。
VB.Net在代码文件中不需要命名空间,尽管你可以添加一个来创建一个C#,就像命名约定一样。如果您使用此方法,建议您从项目的属性中清除Root namespace
并控制您的背部。
对于生成代码的大多数工具,您通常可以在通过custom tool namespace
属性生成代码的自定义工具的属性中配置它。对于实体框架,您应该通过打开edmx
文件的属性并向custom tool namespace
属性添加内容来更改它。默认情况下这将为空。
但是:默认的T4模板不使用自定义工具命名空间。因此,您需要编辑所有tt模板(通常为YourModel.tt
和YourModel.context.tt
以使用命名空间。我从未能让生成器使用custom tool namespace
属性。快捷方式并将此行更改为T4模板:
Dim codeNamespace as String = code.VsNamespaceSuggestion()
到此:
Dim codeNamespace as String = "Your.Desired.Namespace"
不要忘记将解决方案资源管理器设置为Show All files
以便找到T4模板。