我正在尝试在新的VB.NET项目中定义新的名称空间和类;但是,Visual Studio不允许我实例化任何新的名称空间/类/方法。
我有.....
尝试将新名称空间导入现有的代码隐藏页面失败。
新的命名空间,类和方法.....
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社区可能存在问题。
答案 0 :(得分:4)
到目前为止我注意到的四件事:
导入名称空间,而不是类(至少目前是这样):
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
确保名称空间是全名,并且您没有从项目继承更高级别的名称空间:
Imports MyProjectName.SignInSignOut
ASP.NET Webforms对于该代码应驻留的位置很挑剔。将其放在解决方案的App_Code
文件夹中。
MsgBox()
不会满足您在Webforms项目中的期望。它会将打开一个消息框,但它将在用户计算机的浏览器中的网络服务器和不是上执行。该消息框仍将阻止该线程,直到有人将其关闭为止,这对您的Web服务器是一个问题。答案 1 :(得分:0)
在Visual Basic中,通常,名称空间分为两部分(与c#不同)。创建项目时,它将自动为您创建一个名称空间,您可以在项目属性-Default Namespace
中看到该名称空间。您最初会在这里找到与Assembly Name
中相同的值和原始项目名称。现在,假设该名称为MyWebProject
现在,当您添加新文件时,它不会添加Namespace
块。您具有自动名称空间MyWebProject
。如果添加诸如MyFirstNamespace
之类的名称空间块,则该块中的类将为-MyWebProject.MyFirstNamespace
,因此在VB.net中分为两部分。