我们在 .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
任何能够在最短的时间内实现这一目标的解决方法都将是非常好的!
对于初学者来说,不要像在 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
匹配之类的事情,但这就是此时的所有字符串操作。