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
我从 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