Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VS 2017/ASP.net-未识别全局函数_Asp.net_Vb.net_Visual Studio 2010_Global Variables_Visual Studio 2017 - Fatal编程技术网

VS 2017/ASP.net-未识别全局函数

VS 2017/ASP.net-未识别全局函数,asp.net,vb.net,visual-studio-2010,global-variables,visual-studio-2017,Asp.net,Vb.net,Visual Studio 2010,Global Variables,Visual Studio 2017,我从VS2010(VB)一直跳到VS2017,这可能是个错误。我已经被虫子拖慢了,我已经报告过了。我最近关心的是如何访问一个在VS2010中从未遇到过问题的全局函数类。我已经报告过了,现在正在进行分类,但我想确保自2010年以来版本中没有发生变化,希望这里的人能告诉我 从本质上讲,全局类无论如何配置,都不会被任何其他类识别。在表单类中包含引用会导致IDE将其标记为错误。例如,GlobalFunctions.vb文档中的代码: Public Class GlobalFunctions P

我从VS2010(VB)一直跳到VS2017,这可能是个错误。我已经被虫子拖慢了,我已经报告过了。我最近关心的是如何访问一个在VS2010中从未遇到过问题的全局函数类。我已经报告过了,现在正在进行分类,但我想确保自2010年以来版本中没有发生变化,希望这里的人能告诉我

从本质上讲,全局类无论如何配置,都不会被任何其他类识别。在表单类中包含引用会导致IDE将其标记为错误。例如,GlobalFunctions.vb文档中的代码:

Public Class GlobalFunctions

    Public Function DecodeBase64(strEncoded As String) As String
        Dim byt As Byte() = Convert.FromBase64String(strEncoded)
        Return (System.Text.ASCIIEncoding.ASCII.GetString(byt))
    End Function

    Public Function EncodeBase64(strUnencoded As String) As String
        Dim byt As Byte() = System.Text.Encoding.UTF8.GetBytes(strUnencoded)
        Return (Convert.ToBase64String(byt))
    End Function
End Class
以及表单页中的调用方法:

If elemSetting.Attributes("name").Value = "LoginName" Then
    Session("MailLoginName") = globalfunctions.DecodeBase64(elemSetting.Attributes("value").Value)
End If

If elemSetting.Attributes("name").Value = "LoginPass" Then
    Session("MailLoginPass") = globalfunctions.DecodeBase64(elemSetting.Attributes("value").Value)
End If
此处,IDE中突出显示了错误:

以及错误列表中的错误消息:

也要理解,我已经尝试了尽可能多的声明变体,例如“公共共享函数”,使调用子共享,将全局函数文档定义为类或模块,等等。没有任何效果

我还尝试将GlobalFunctions.vb类放在项目的根目录和名为
App\u code
的目录中,正如网上一些博客文章所建议的那样

由于我在VS 2010中没有遇到过类似的问题,我认为这是2017年的一个bug,正如我所说,我已经报告过了。但我想用比我更聪明的头脑来检查一下,看看我是否忽略了2010年到2017年间可能发生变化的某些事情

有人能告诉我我做错了什么吗?或者对我来说,这确实是一个bug


谢谢

尝试删除并重新创建您的
GlobalFunction.vb
,就像在过去重命名它一样,它在项目中的任何地方都无法正确更正

我认为这是正常的。您使用的是
,而不是
模块
,因此您需要声明一个新实例,如下所示:

Dim Globaler As New GlobalFunctions
If elemSetting.Attributes("name").Value = "LoginName" Then
    Session("MailLoginName") = Globaler.DecodeBase64(elemSetting.Attributes("value").Value)
End If
If elemSetting.Attributes("name").Value = "LoginPass" Then
    Session("MailLoginPass") = Globaler.DecodeBase64(elemSetting.Attributes("value").Value)
End If
或者使用模块,就不需要声明新实例

此外,如果仍然无法访问该文件,您应该检查以下事实,即您可能只是将该文件包含到解决方案中,而没有将其包含到项目中

要添加新类,请执行以下操作:

  • 解决方案浏览器
  • 右键单击项目名称(我的项目上方)
  • 阶级

第一个全局函数是一个类,而不是该类的实例。因此,要使用类名直接调用这些方法,应该将它们标记为SharedSecond。类GlobalFunctions在另一个项目中吗?如果是,您是否已检查是否进行了适当的参考,以及是否有正确的导入?如果没有,页面和类是否使用相同的名称空间(并再次检查导入)?@Steve我认为只是他没有创建类的实例。是的,我完全同意shared@Mederic错误信息很清楚。从页面代码的角度来看,没有名为GlobalFunctions的类。少了一些东西here@Steve正如我提到的,我尝试了几种方法来声明函数和类/模块,包括“Shared”、Public、,“等等,我只是没有把它们全部展示在这里,因为这样会把信息弄得乱七八糟。谢谢。正如我提到的,我也试着把它作为一个模块来做,这就是我在2010年顺利完成的方式。我在这里使用类是因为它似乎在博客中更普遍地被推荐。当然,类和模块在某种程度上是不同的,它们都有各自的优势,但当您必须存储数据以创建自己的对象时,我会推荐类。这里的问题是,页面中的代码无法看到名为GlobalFunctions的类。您的代码没有改变这一点。@Mederic(更新)我按照您的建议尝试过,但IDE显示一个错误,“未定义'GlobalFunctions'类型”。@Mederic谢谢您的耐心,巴德!成功了!就像我在聊天中说的,我无法想象它是怎么搞砸的,但它一定是搞砸了,因为现在一切都好了。再次感谢!