【问题标题】:VB: grouping classes into namespacesVB:将类分组到命名空间中
【发布时间】:2015-03-22 22:33:49
【问题描述】:

在 C# 中,当我们创建一个文件夹时,进入该文件夹的所有类都将归入该文件夹名称作为它们的命名空间。或者使用namespace 关键字,我们可以手动定义它们。但是在 VB 中,当我创建一个文件夹时,这不会自动完成。假设我想添加一个实体框架对象,它属于默认命名空间。然后,如果 EF 中有一个登录表,我就不能有一个名为 Login 的窗口。这会导致很多问题。如何更改 edmx 文件的命名空间?并防止 VB 中的命名空间冲突?

【问题讨论】:

  • 您可以通过左键单击 .edmx 文件(在解决方案资源管理器中)更改 edmx 的命名空间,然后打开 .edmx 文件属性窗口;修改自定义工具命名空间的值。请注意,默认情况下“自定义工具命名空间”属性将为空,因此 Designer.cs 文件的命名空间是项目默认命名空间。
  • @DavidTansey:它不会改变命名空间

标签: vb.net entity-framework namespaces


【解决方案1】:

VB.Net 有一些我们称之为Root Namespace 的东西。其中 C# 有一个default namespace

最大的区别在于Root Namespace 是真正的根,因此将始终添加到您在代码文件中定义的所有内容的前面。

然而,C# 将使用默认命名空间来使用它在您添加 namespace 语句到您的代码文件时添加它。它还将使用文件夹名称来构建完整的命名空间。

VB.Net 在代码文件中不需要命名空间,尽管您可以添加一个命名空间来创建类似 C# 的命名约定。如果您要使用这种方法,建议您从项目属性中清除 Root namespace 并重新控制。

对于大多数生成代码的工具,您通常可以在通过custom tool namespace 属性生成代码的自定义工具的属性中进行配置。对于实体框架,您应该通过打开edmx 文件的属性来更改它,并向custom tool namespace 属性添加一些内容。默认为空。

但是:默认的 T4 模板不使用自定义工具命名空间。因此,您需要编辑所有 tt 模板(通常是 YourModel.ttYourModel.context.tt 以使用命名空间。我一直无法让生成器使用 custom tool namespace 属性。我选择了快捷方式并更改了这一行T4 模板:

Dim codeNamespace as String = code.VsNamespaceSuggestion()

到这里:

Dim codeNamespace as String = "Your.Desired.Namespace"

不要忘记将解决方案资源管理器设置为 Show All files 以查找 T4 模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2014-06-24
    相关资源
    最近更新 更多