提问人:christosst 提问时间:10/20/2023 最后编辑:Brian M Staffordchristosst 更新时间:11/6/2023 访问量:71
使用特定 VB 函数将旧版 VB .NET 代码迁移到 .Net Standard 2.0 的问题
Legacy VB .NET Code migration issues to .Net Standard 2.0 with specific VB functions
问:
我们在 .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)
将相同的代码添加到 7 to.NET 时,相同的代码有效,但这不是一个选项,因为当我们在迁移中并行行走时,它将由 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
任何在最短的时间内实现它的解决方法都将是极好的!
答:
0赞
Perringaiden
11/6/2023
#1
对于初学者来说,不要像在 VB6 中那样格式化它。已经20年了。:-)
其次,我所知道的最简单的“交叉兼容”类型是 。我无法通过执行确认它在 Core 2.0 中是否有效(我可以轻松检查的最早是 3.1),但文档说它在那里,而且肯定在 Framework 4.8.1 中BitConverter
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
评论
String.Length
Substring
Convert.ToDouble