2014-06-23 43 views
12

我的公司有一个主要问题。我们在Delphi.NET中开发了一个包含超过1,000,000行代码的应用程序。正因为如此,我们坚持使用Delphi 2007和.NET 2.0。Delphi.NET和Delphi 2007卡住

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

之后,我们尝试反编译Delphi.NET程序集 - 从那回来的代码几乎不可读,并且有数百个调用Borland特定程序集的帮助函数。我已经考虑过自己编写一个转译器的可能性,但Delphi的模糊语法太难以用直接的语法来实现。

所以,现在最重要的问题是,还有没有任何可能性,不包括手动翻译所有的代码?或者也许是允许部分逐步迁移的迁移路径?

+0

_a的迁移路径,允许部分和逐步迁移_对我来说这__sounds__邀请;但当然,除了行数外,我对你的系统一无所知。它是模块化的,它是如何分区的? – TaW

+0

该应用程序分为大约200个单元,并在IIS上提供旧式WCF Web服务。我在这里看到的问题是,尽管.NET允许像在一个项​​目中结合使用VB和C#源文件这样的语言互操作 - 我不知道这种互操作如何为C#和Delphi.NET工作 – user3768733

+0

构建UI并调用所有的Delphi通过Interop的DLLS可以成为一个开始。然后,用适当的方法开始替换每个DLL函数调用。你的结果可以更好地松散耦合系统。 – celerno

回答

4

退房工具,如: http://www.9rays.net/TourStep.aspx?TourStepID=21

虽然它可能不会像通过它运行你的整个Delphi应用程序并获得C#源回报那样简单,这几样IL译者/反编译器是相当准确的。我的建议是运行几个程序集并通过回归测试来检查准确性。机会非常高,您必须在生成的代码中进行一些补救,但这比重写整个应用程序要好。

另外:?检查出http://blogs.msdn.com/b/danielfe/archive/2004/06/15/156087.aspx