C# 坚持使用Delphi.NET和Delphi 2007

C# 坚持使用Delphi.NET和Delphi 2007,c#,.net,delphi,delphi-2007,delphi.net,C#,.net,Delphi,Delphi 2007,Delphi.net,我的公司有一个大问题。我们在Delphi.NET中开发了一个包含超过1.000.000行代码的应用程序。因此,我们只能使用Delphi2007和.NET2.0 随着技术和用例的发展,我们需要迁移到另一个开发平台。到目前为止,我们尝试了几种承诺将Delphi.NET转换为C#代码的工具——每种工具都有一些问题,比如字符串索引错误(Delphi 1 C#0)或使用类型声明数组边界 在这种方法之后,我们尝试反编译Delphi.NET程序集-从该程序集返回的代码几乎不可读,并且有数百个辅助函数调用Bor

我的公司有一个大问题。我们在Delphi.NET中开发了一个包含超过1.000.000行代码的应用程序。因此,我们只能使用Delphi2007和.NET2.0

随着技术和用例的发展,我们需要迁移到另一个开发平台。到目前为止,我们尝试了几种承诺将Delphi.NET转换为C#代码的工具——每种工具都有一些问题,比如字符串索引错误(Delphi 1 C#0)或使用类型声明数组边界

在这种方法之后,我们尝试反编译Delphi.NET程序集-从该程序集返回的代码几乎不可读,并且有数百个辅助函数调用Borland特定的程序集。我已经考虑过自己编写transpiler的可能性,但是Delphi的模糊语法很难用直接的语法实现

那么现在一个重要的问题是,是否还有不包括手工翻译所有代码的可能性?或者可能是允许部分和逐步迁移的迁移路径?

签出以下工具:

虽然这可能不像通过它运行整个Delphi应用程序并获得C#源代码那样简单,但这种IL转换器/反编译器非常准确。我的建议是运行一些组件和回归测试,以抽查准确性。很有可能您必须对生成的代码进行一些修正,但这比重写整个应用程序要好


另外:查看允许部分和逐步迁移的迁移路径?对我来说,这听起来很诱人;当然,除了线路计数,我对你们的系统一无所知。它是模块化的,它是如何划分的等等?该应用程序被分成大约200个单元,并在IIS上提供老式的WCF Web服务。我在这里看到的问题是,尽管.NET允许语言互操作,比如在一个项目中组合VB和C#sourcefiles,但我不知道这种互操作如何适用于C#和Delphi。NetBuild UI和通过互操作调用所有Delphi DLL可以是一个开始。然后,开始用适当的方法替换每个DLL函数调用。你的结果可以是更好的松散耦合系统。我认为如果你想把工作做好,你需要重新编写应用程序。推荐阅读:有效地使用遗留代码(Robert C.Martin)