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

VS 2017 / ASP.net - Global functions not being recognized

我从 VS 2010 (VB) 一路跳到 VS 2017,这可能是个错误。我已经因错误而放慢了速度,我已经报告了这些错误。我最近担心的是访问全局函数 class,我在 VS 2010 中从未遇到过问题。我已经报告了它并且它正在分类中,但我想确保某些东西没有改变2010年以来的版本,希望这里有人能告诉我。

基本上发生的是全局 class,无论它如何配置,都不会被任何其他 class 识别。在表单 class 中包含引用会导致 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:

中突出显示

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

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

我也试过将 GlobalFunctions.vb class 放在项目的根目录和名为 App_Code 的目录中,正如网上一些博客文章所建议的那样。

而且由于我在 VS 2010 中没有遇到过这样的问题,我认为这是 2017 年的错误,正如我所说,我已经报告过。但是我想用比我自己更好的头脑来检查一下,看看我是否忽略了一些在 2010 年到 2017 年之间可能发生了变化的事情。

有人可以告诉我我做错了什么吗?或者可以向我重申这确实是一个错误?

谢谢!

尝试删除并重新创建您的 GlobalFunction.vb,因为过去可能通过重命名它在项目中的所有地方都没有正确更正。

我觉得这很正常。您使用的是 Class 而不是 Module,因此您需要声明一个新实例,或者像这样调用:

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

或者使用模块,您将不需要声明一个新实例。

此外,如果它仍然无法访问,您应该检查一下,也许您只是将文件包含在解决方案中,而没有将其包含在项目中

添加新的class:

  • 解决方案资源管理器
  • 右键单击您的项目名称(在我的项目上方)
  • 添加
  • Class