遗留的VB .NET代码迁移到.Net Standard 2.0的问题与特定的VB函数

uqxowvwt  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(132)

我们在.NET 4.8.1库中有一些遗留代码(假设从几十年前编写的VB.6迁移而来),由我们在4.8.1上运行的主应用程序使用。我们计划将此库迁移到.Net Standard 2.0,以便在某个时候将整个应用程序迁移到.NET 7/8。当将部分代码迁移到.NET Standard时,我们会遇到VisualBasic的问题-导致Len、Mid、瓦尔和Asc等错误的特定函数,尽管我们引用了Microsoft.Visual.Basic nuget包(10.3.0)
当将其添加到.NET 7时,相同的代码也可以工作,但这不是一个选项,因为当我们并行迁移时,它将被4.8.1和7应用程序共享
我们是否遗漏了什么?我们不想重写现有的代码,因为我们有足够的时间,而不是时间。也许在某个时候,我们会这样做。
一个小样本代码

Public Shared Function HexEncode(Text As String) As String
    Try
        Dim iCount As Double, sTemp As String = "", GData As String = ""
        For iCount = 1 To Text.Length
            sTemp = Hex$(Asc(Mid$(Text, iCount, 1)))
            If Len(sTemp) < 2 Then sTemp = "0" & sTemp
            GData &= sTemp
        Next
        HexEncode = GData
    Catch ex As Exception
        Return ""
    End Try
End Function

字符串
任何变通办法,使它发生在最少的时间将是优秀的!

slwdgvem

slwdgvem1#

对于初学者来说,不要像在VB 6中一样格式化它。它已经20年了。:-)
其次,我知道的最简单的“交叉兼容”类型是BitConverter.我不能确认它在Core 2.0中运行(我可以很容易地检查最早是3.1),但文档说它在那里,它肯定在Framework 4.8.1中

Public Shared Function HexEncode(value As String) As String
    Try
        Dim bytes() As Byte
        Dim hexString As String

        bytes = Encoding.ASCII.GetBytes(value)
        hexString = BitConverter.ToString(bytes)

        ' If you want the "-" left in, remove this line.
        hexString = hexString.Replace("-", "")

        Return hexString

    Catch ex As Exception
        Return ""
    End Try
End Function

字符串
所以这个函数在两个框架中都可以工作,你需要确认编码,Hex$的字节序是否匹配BitConverter.ToString,但这就是所有的字符串操作。

相关问题