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



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

我有。。。。。

  1. 在Visual Studio 2019社区中建立一个新项目;
  2. 创建了一个新的命名空间(SignInSignOut(,其中包含单个类(TestClass(和一个方法(ShowMessageBox(;
  3. 尝试将新命名空间导入到现有的代码隐藏页(默认.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 Community解决了这个问题。 我重新安装了VS 2010 Pro的旧副本,并且该示例按预期工作,这使我相信VS 2019社区可能有问题。

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

  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 服务器上执行此操作,而不是在用户计算机上的浏览器中执行此操作。消息框仍将阻止该线程,直到有人将其关闭,这对您的 Web 服务器来说是一个问题。

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

现在,当您添加新文件时,它不会添加Namespace块。您有自动命名空间MyWebProject。如果你添加命名空间块,如MyFirstNamespace,你在这个块中的类将是 -MyWebProject.MyFirstNamespace,因此 VB.net 是两部分命名空间。

最新更新