我正在寻找一种实用程序/工具来将对遗留 VB6 函数的调用转换为 .NET 等效函数。
例如,它会转换这个......
FormatCurrency(Cart.TotalAmount)
Len(Str)
UCase(Str)
UBound(PaymentsArray)
对此...
Cart.TotalAmount.ToString("c")
Str.Length
Str.ToUpper()
PaymentsArray.Length - 1
有人知道吗,还是我必须自己动手?
我正在寻找一种实用程序/工具来将对遗留 VB6 函数的调用转换为 .NET 等效函数。
例如,它会转换这个......
FormatCurrency(Cart.TotalAmount)
Len(Str)
UCase(Str)
UBound(PaymentsArray)
对此...
Cart.TotalAmount.ToString("c")
Str.Length
Str.ToUpper()
PaymentsArray.Length - 1
有人知道吗,还是我必须自己动手?
您需要对这些功能进行转换吗?vb6 函数在 vb.net 中工作得很好。
如果您的代码已经转换为有效的 VB.Net,为什么不直接保留调用?这些例程位于 Microsoft.VisualBasic.dll 中,它是.NET 框架的完全受支持的部分,只要 .NET 存在,它就会存在。如果您愿意,请避免在新代码中使用它们,但做额外的工作将它们从现有代码中删除似乎相当不必要。
如果您还没有转换代码,您可以选择购买Artinsoft 的 VB Upgrade Companion,它可以完成您要求的一些转换,作为 VB6 到 VB.Net 转换的一部分。
此处提供了 Microsoft 提供的免费迁移工具。它是在 VS2003 发布时发布的。
你在这里得到它:http: //blogs.msdn.com/b/bethmassi/archive/2010/07/08/free-vb6-migration-tool-amp-updated-vb-developer-center.aspx
使用来自 Great Migrations 的 VB6/ASP/COM 分析和重新设计工具 gmStudio,您可以通过更改“字符串机器”使用的“表面形式”来控制这些事情,因为它会解释其编译器生成的 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 的原始语义。例如,如果参数为空,则 string.Length 在 C# 中引发异常,但 VBNET.Strings.Len() 返回 0。也就是说,如果您从不期望空字符串,那么在发生异常时抛出异常可能是有利的——或者不是——至少你有选择的余地。