使用特定 VB 函数将旧版 VB .NET 代码迁移到 .Net Standard 2.0 的问题

Legacy VB .NET Code migration issues to .Net Standard 2.0 with specific VB functions

提问人:christosst 提问时间:10/20/2023 最后编辑:Brian M Staffordchristosst 更新时间:11/6/2023 访问量:71

问:

我们在 .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 

任何在最短的时间内实现它的解决方法都将是极好的!

.NET vb.net 迁移 net-standard-2.0

评论

0赞 Richard 10/20/2023
什么是“问题”?如果您遇到编译器错误,那是什么?
4赞 jmcilhinney 10/20/2023
不能像在 .NET Standard 中使用那样特定于 VB 的方法,因为它们不是标准的 .NET。您必须使用标准 .NET 重写这些部分,例如 、 、 等。这是一个示例,说明为什么一开始就不应该使用这些 VB6 保留。如果要面向 .NET Standard,则只能使用 .NET Standard 支持的代码。就是这么简单。String.LengthSubstringConvert.ToDouble
0赞 christosst 10/20/2023
@Richard 它们只是无法使用
1赞 djv 10/20/2023
@jmcilhinney是正确的。是时候付钱给吹笛人了。花时间立即修复所有编译错误
2赞 Craig 10/20/2023
我想临时的替代方案是编写您自己的兼容性函数版本。

答:

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