【问题标题】:What is the best C# to VB.net converter? [closed]什么是最好的 C# 到 VB.net 转换器? [关闭]
【发布时间】:2010-09-10 10:37:19
【问题描述】:

在网上搜索我的 VB.net 问题的解决方案时,我经常会找到有关特定主题的有用文章,但代码是 C#。这不是什么大问题,但是手动将其转换为 VB 需要一些时间。 有一些网站提供从 C# 到 VB 的代码转换器,反之亦然,但是在代码转换后修复所有缺陷几乎和我自己做一样耗时。

直到现在我还在使用http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx

你知道更好的吗?

【问题讨论】:

  • 关门了,所以我们永远不知道是否有比 2008 年更好的地方
  • ILSpy 在 2016 年为我工作。与公认的 Reflector 答案几乎相同。
  • 任何登陆这里的人,我已经使用Econ Netvert 很多年了,它大部分时间都运行顺利并且离线。只需确保从提供商列表(右上角)中选择 ICSharp 4.0。请注意,它不处理一些新的语言结构(lambdas、匿名函数、null-coalescing),但在 95% 的时间里都可以正常工作。双向工作(C# VB.NET),也可以处理整个项目。请注意,该项目已不再维护。

标签: c# vb.net converter


【解决方案1】:

如果您找不到好的转换器,您可以随时编译 c# 代码并使用 Reflector 中的反汇编程序来查看 Visual Basic 代码。一些变量名会改变。

【讨论】:

  • 不幸的是,Reflector 中的 VB 反编译器有很多错误。通常你会得到可以编译但产生不同结果的代码。试试这个作为评估代码转换器的测试用例:double x = 3 / 2;双 y = 3.0 / 2; int z = (int)(-3.5); "x" 应该是 1.0(许多转换器产生的代码导致 x=1.5),y 应该是 1.5,z 应该是 -3(许多转换器产生的代码导致 z=-4)
  • 注意:要查看我在Reflector中提到的问题,需要使用临时变量,否则C#编译器会将计算优化掉,不会触发Reflector中的bug。
【解决方案2】:

Telerik 拥有基于 SharpDevelop 的 a good converter,多年来一直运行良好,但多年来一直没有更新(因为它基于 SharpDevelop)。

我最近遇到了roslyn based converter as well。我不知道它工作得如何或维护得如何,但由于它是开源的,你可以随时 fork 并根据需要进行更新。

【讨论】:

  • 这有一个方便的选项,可以上传源代码的 zip,然后下载所有转换后的 zip 和转换错误报告。
  • 它不再转换 cmets!没有反馈支持
  • 请查看我的编辑@eschneider。也许新的会更适合你。
  • 刚刚又试了一次,现在完全不行了。 System.NotSupportedException: NotInheritableKeyword 不支持!
  • 您提到的 SharpDevelop 转换器也有一个 Visual Studio extension,因为它使用项目上下文,所以更加准确。
【解决方案3】:

最后我查了一下,SharpDevelop 有一个,它也是开源的。

【讨论】:

    【解决方案4】:

    SharpDevelop 有一个内置的 C# 和 VB.NET 之间的转换器。不是完美的想法(例如 VB.NET 中的可选值在 C# 中没有等效值,因此必须编辑转换器方法的签名),但您可以节省一些时间,因为您在 IDE 中进行所有操作而不是网页(复制 C# 代码、粘贴、点击按钮、复制 VB.NET 代码、粘贴到 IDE :P)

    【讨论】:

      【解决方案5】:

      Carlos Aguilar Mares 已经使用了大约 40 个永远在线转换器 - Code Translator 但我同意 Reflector 是更好的答案。

      【讨论】:

        【解决方案6】:

        虽然没有回答你的问题,但我会说我一直处于类似的位置。

        当我真正开始使用 .NET 时,我意识到 C# 中的代码示例很尴尬,但在我的第一个项目几周​​后(在我更加熟悉 .NET 框架和 VB.NET 本身之后),我发现不得不对 C# 代码进行逆向工程是很有趣的,有时也是有益的。不仅在语法方面,而且还了解方法上的细微差别——在这方面保持开放的心态很有用。

        随着我对该框架的了解越来越多,我坚持使用 VB.NET,但不久之后,我将涉足 C#,以期成为“多语言”。

        【讨论】:

          【解决方案7】:

          目前我使用在 CodeProject (http://www.codeproject.com/KB/cs/Code_convert_add-in.aspx) 上找到的 VS2005 插件;它使用外部服务 (http://www.carlosag.net/Tools/CodeTranslator/) 执行翻译。

          有时,当我离线时,我会使用转换器工具 (http://www.kamalpatel.net/ConvertCSharp2VB.aspx)。

          【讨论】:

          • 第 1 和第 3 链接现在已断开。
          【解决方案8】:

          我认为最好的办法是学习足够的其他语言,以便您可以手动重写,在某些方面存在一些相当困难的差异,我不确定转换器能否很好地处理。例如,比较我从 C# 到 VB 的以下翻译:

          public class FileSystemEventSubscription : EventSubscription
          {
              private FileSystemWatcher fileSystemWatcher;
          
              public FileSystemEventSubscription(IComparable queueName, 
                  Guid workflowInstanceId, FileSystemWatcher fileSystemWatcher) : base(queueName, workflowInstanceId)
              {
                  this.fileSystemWatcher = fileSystemWatcher;
              }
          

          变成

          Public Class FileSystemEventSubscription
              Inherits EventSubscription  
              Private myFileSystemWatcher As FileSystemWatcher
              Public Sub New(ByVal QueueName As IComparable, ByVal WorkflowInstanceID As Guid, ByVal Watcher As FileSystemWatcher)
                  MyBase.New(QueueName, WorkflowInstanceID)
                  Me.myFileSystemWatcher = Watcher
              End Sub
          

          C# 来自自定义活动框架示例,恐怕我丢失了它的链接。但它包含一些看起来很讨厌的继承(从 VB 的角度来看)。

          【讨论】:

          【解决方案9】:

          http://www.developerfusion.com/tools/convert/csharp-to-vb/(新网址)现在支持 .NET 3.5 语法(再次感谢#develop 家伙),并将自动将结果复制到剪贴板:)

          【讨论】:

            【解决方案10】:

            您可以将您的 DLL 或 EXE 加载到 Redgate(以前的 Lutz Roeder).Net Reflector,选择您的方法,然后从语言组合中选择所需的语言。所选方法的代码将以所选语言显示。

            我希望这会有所帮助。

            【讨论】:

              【解决方案11】:

              你可以试试这个converter。有 C# 到 VB 和 VB 到 C# 的功能。

              希望这会有所帮助。

              【讨论】:

                【解决方案12】:
                【解决方案13】:

                我正在使用名为 Language Convert 的免费 Visual Studio 2012 插件

                它在 2010/2012 年完美运行,不幸的是还没有在 VS 2013 上运行。

                转换不是100%准确,但肯定很有帮助,第一次启动有点棘手,请查看下图:

                【讨论】:

                  猜你喜欢
                  • 2011-04-07
                  • 2010-09-15
                  • 2010-11-17
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-12-26
                  • 2010-09-09
                  • 2011-03-08
                  • 1970-01-01
                  相关资源
                  最近更新 更多