无法使用VS 2019在VB.Net项目中创建新的命名空间

时间:2019-09-06 14:04:24

标签: vb.net namespaces visual-studio-2019

我正在尝试在新的VB.NET项目中定义新的名称空间和类;但是,Visual Studio不允许我实例化任何新的名称空间/类/方法。

我有.....

  1. 在Visual Studio 2019社区中建立一个新项目;
  2. 用一个类(TestClass)和一个方法(ShowMessageBox)创建一个新的命名空间(SignInSignOut);
  3. 试图将新的名称空间导入到现有的代码隐藏页面(Default.aspx.vb)中;和
  4. 试图通过代码隐藏页面的Page_Load()方法实例化新的类和方法。

尝试将新名称空间导入现有的代码隐藏页面失败。

新的命名空间,类和方法.....

Imports Microsoft.VisualBasic

Namespace SignInSignOut
    Public Class TestClass
        Public Shared Sub ShowMessageBox(ByVal sString As String)
            MsgBox(sString)
        End Sub
    End Class
End Namespace

尝试导入Namespace.Class并实例化Default.aspx.vb代码隐藏页上的方法.....

Imports SignInSignOut.TestClass

Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

        ShowMessageBox("This is just a test!")

    End Sub
End Class

编辑

我通过重新安装Visual Studio 2019社区解决了该问题。我重新安装了VS 2010 Pro的旧版本,该示例按预期工作,这使我相信VS 2019社区可能存在问题。

2 个答案:

答案 0 :(得分:4)

到目前为止我注意到的四件事:

  1. 导入名称空间,而不是类(至少目前是这样):

    Imports SignInSignOut
    
    Public Class _Default
        Inherits Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    
            TestClass.ShowMessageBox("This is just a test!")
    
        End Sub
    End Class
    
  2. 确保名称空间是全名,并且您没有从项目继承更高级别的名称空间:

    Imports MyProjectName.SignInSignOut
    
  3. ASP.NET Webforms对于该代码应驻留的位置很挑剔。将其放在解决方案的App_Code文件夹中。

  4. MsgBox()不会满足您在Webforms项目中的期望。它会打开一个消息框,但它将在用户计算机的浏览器中的网络服务器不是上执行。该消息框仍将阻止该线程,直到有人将其关闭为止,这对您的Web服务器是一个问题。

答案 1 :(得分:0)

在Visual Basic中,通常,名称空间分为两部分(与c#不同)。创建项目时,它将自动为您创建一个名称空间,您可以在项目属性-Default Namespace中看到该名称空间。您最初会在这里找到与Assembly Name中相同的值和原始项目名称。现在,假设该名称为MyWebProject

现在,当您添加新文件时,它不会添加Namespace块。您具有自动名称空间MyWebProject。如果添加诸如MyFirstNamespace之类的名称空间块,则该块中的类将为-MyWebProject.MyFirstNamespace,因此在VB.net中分为两部分。