我正在寻找一个实用程序/工具来将对旧版VB6函数的调用转换为.NET等价函数。
例如,它会将此转换为...
FormatCurrency(Cart.TotalAmount)
Len(Str)
UCase(Str)
UBound(PaymentsArray)
对此...
Cart.TotalAmount.ToString("c")
Str.Length
Str.ToUpper()
PaymentsArray.Length - 1
有人知道一个,或者我将不得不自己动手?
答案 0 :(得分:2)
您是否需要转换这些功能? vb6函数在vb.net中运行得很好。
答案 1 :(得分:1)
如果您的代码已经转换为工作VB.Net,为什么不直接保留这些调用呢?例程在Microsoft.VisualBasic.dll中,它是一个fully supported part of the .NET framework,只要.NET存在就会存在。如果你愿意,可以避免在新代码中使用它们,但是做额外的工作以将它们从现有代码中取出似乎是非常不必要的。
如果您尚未转换代码,则可以选择购买Artinsoft's VB Upgrade Companion,这可以执行您要求的转换some,作为VB6到VB.Net转换的一部分。< / p>
答案 2 :(得分:0)
使用gmStudio,Great Migrations的VB6 / ASP / COM分析和重新设计工具,您可以通过更改“字符串机器”使用的“表面形式”来控制这些内容,因为它解释了由其编译器生成的pcode并以所需的符号创作。例如,以下是Len的默认表面形式:
<subcode id="Len">
<vbn role="function" narg="1" code="Strings.Len(%1d)"/>
<csh role="function" narg="1" code="VBNET.Strings.Len(%1d)"/>
</subcode>
要自定义为Len操作发出的C#代码,您可以应用覆盖并创建自定义转换配置:
<subcode id="Len">
<csh role="function" narg="1" code="%1d.Length"/>
</subcode>
占位符%1d表示应将原始参数发送到C#代码流的位置。
这是一个非常简单的案例的简化,但这就是这个想法。
注意:默认表面形式更接近VB6的原始语义。例如,如果参数为null,则string.Length在C#中抛出异常,但是VBNET.Strings.Len()返回0.这就是说,如果你从未期望一个空字符串,那么在发生异常时抛出异常可能是有利的 - 或者不 - 至少你可以选择。
答案 3 :(得分:0)
此处提供了Microsoft提供的免费迁移工具。它在VS2003发布时发布。