旧版 VB .NET 代码迁移到具有特定 VB 功能的 .Net Standard 2.0 的问题

问题描述 投票:0回答:1

我们在 .NET 4.8.1 库中有一些遗留代码(假设从几十年前编写的 VB.6 迁移而来),由在 4.8.1 上运行的主应用程序使用 我们计划将此库移至 .Net Standard 2.0,以便在某个时候将整个应用程序迁移至 .NET 7/8。 将部分代码移至 .NET Standard 时,我们遇到了 VisualBasic 特定函数的问题,这些函数导致 Len、Mid、Val 和 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 

任何能够在最短的时间内实现这一目标的解决方法都将是非常好的!

.net vb.net migration .net-standard-2.0
1个回答
0
投票

对于初学者来说,不要像在 VB6 中一样对其进行格式化。已经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
匹配之类的事情,但这就是此时的所有字符串操作。

© www.soinside.com 2019 - 2024. All rights reserved.