2

我正在寻找一种实用程序/工具来将对遗留 VB6 函数的调用转换为 .NET 等效函数。

例如,它会转换这个......

FormatCurrency(Cart.TotalAmount)
Len(Str)
UCase(Str)
UBound(PaymentsArray)

对此...

Cart.TotalAmount.ToString("c")
Str.Length
Str.ToUpper()
PaymentsArray.Length - 1

有人知道吗,还是我必须自己动手?

4

4 回答 4

2

您需要对这些功能进行转换吗?vb6 函数在 vb.net 中工作得很好。

于 2010-01-09T00:47:07.877 回答
1

如果您的代码已经转换为有效的 VB.Net,为什么不直接保留调用?这些例程位于 Microsoft.VisualBasic.dll 中,它是.NET 框架的完全受支持的部分,只要 .NET 存在,它就会存在。如果您愿意,请避免在新代码中使用它们,但做额外的工作将它们从现有代码中删除似乎相当不必要。

如果您还没有转换代码,您可以选择购买Artinsoft 的 VB Upgrade Companion,它可以完成您要求的一些转换,作为 VB6 到 VB.Net 转换的一部分。

于 2010-01-09T00:49:49.873 回答
0

此处提供了 Microsoft 提供的免费迁移工具。它是在 VS2003 发布时发布的。

你在这里得到它:http: //blogs.msdn.com/b/bethmassi/archive/2010/07/08/free-vb6-migration-tool-amp-updated-vb-developer-center.aspx

于 2012-08-29T15:52:36.490 回答
0

使用来自 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。也就是说,如果您从不期望空字符串,那么在发生异常时抛出异常可能是有利的——或者不是——至少你有选择的余地。

于 2010-12-22T02:50:50.460 回答