Delphi到C#-有没有合适的工具来做一些硬核转换?

Delphi到C#-有没有合适的工具来做一些硬核转换?,c#,.net,visual-studio,delphi,pascal,C#,.net,Visual Studio,Delphi,Pascal,我已经尝试了一些可用的选项,比如Netcoole的Delphi2CS和TurnSharp。它们都是非常简单的代码,如果你有组件,它会产生大量的错误。我的项目很大,大约1GB,包括所有vcl、源代码和存储库。有没有这样的工具来完成这种繁重的转换?谢谢。恐怕没有任何可靠的自动化工具来实现这一点。Delphi和.NET之间的差异是巨大的。我在2002年做了类似的转换,我手工完成了,从头重写了整个项目,这是核心内容。显然,如果您认为将其移植到.NET太麻烦,您可以通过将其作为COM对象公开来重用功能。您

我已经尝试了一些可用的选项,比如Netcoole的Delphi2CS和TurnSharp。它们都是非常简单的代码,如果你有组件,它会产生大量的错误。我的项目很大,大约1GB,包括所有vcl、源代码和存储库。有没有这样的工具来完成这种繁重的转换?谢谢。

恐怕没有任何可靠的自动化工具来实现这一点。Delphi和.NET之间的差异是巨大的。我在2002年做了类似的转换,我手工完成了,从头重写了整个项目,这是核心内容。显然,如果您认为将其移植到.NET太麻烦,您可以通过将其作为COM对象公开来重用功能。

您的项目不太可能具有所需的单元和集成测试级别,从而使其比一个非常昂贵和困难的项目低。使用自动转换时,很难实现使代码成为现代c#惯用代码所需的体系结构更改

马上停下来。我对大约70000行代码进行了转换,这些代码都是非可视化类库的内容,我估计需要3个月才能正常工作,即使用Delphi 2007.NET编译器编译程序集,并在visual Studio 2010项目中使用它们。对于我来说,这很重要,因为它为我提供了一个跨平台的分布式应用程序框架,但这项工作几乎要了我的命

如果要使用WPF创建一个可视化界面,那么可以使用hwndhost来承载现有的Delphi框架。我们才真正开始这么做,省去了一次重写整个代码库的麻烦。请查看远程信息。

这可能是一个幼稚的建议,但您是否考虑过转换为(基于Delphi语法的.NET语言)


这仍然不是一项容易的任务,但有些VCL组件(例如来自的组件)具有.NET对应项。

进行这种转换毫无意义。这将需要数年的时间(没有工具可以在您需要的复杂程度上为您做到这一点),结果将是您目前拥有的车辆版本。C#应用程序将在当前应用程序运行的所有相同操作系统中运行,并具有所有相同的功能。(实际上有些可能会下降,因为本机代码可以做一些.net代码不能做的事情。)


此外,您将无法找到处理转换所需的程序员,因为这将需要具备Delphi和C#两种专业技能的开发人员。如果您认为很难找到Delphi开发人员,请等待,直到您尝试找到同样是C#专家并愿意进行这种转换的Delphi开发人员。它们比黑独角兽更难找到。

我们已经在D7应用程序中尝试了这一点,或者实际上我们打算这样做,但在分析阶段放弃了,因为我们无法找到合适的工具来完成这一工作,而不必修复大量错误和错误


我建议你考虑拥有一个新的IDE(如果你有一个旧的IDE),如果你真的必须这么做。无论如何,检查并阅读有此问题的人的经验,这并不令人鼓舞。

转换此类项目的唯一可行工具是键盘。你为什么要转换它?也许您可以在COM对象、普通dll或其他东西中移动大量业务逻辑并使用它们。从什么时候开始,代码大小(以GB为单位)是代码复杂性的度量?你为什么要数VCL?一个稍微有用的度量是LOC(代码行数),不计算VCL,甚至这也不是真正有用的。。您可能需要维护一个巨大的Delphi代码库,该代码库是由一个在公司工作12年后不久离开公司的人编写的。你知道一些C#,但你对Delphi一窍不通,所以现在你已经说服你的老板Delphi很老了,“转换”到C#是个好主意(出于各种原因,更不用说你并不真正理解原始代码)。如果这听起来有点像你的情况,那么这个项目就有麻烦了。试试看,如果真的需要转换,或者维护和/或升级当前的项目,我相信你会发现更合适。重写是对时间和金钱的疯狂浪费。但如果我是为了疯狂地浪费时间和金钱,我肯定不会去C#,把自己锁在窗户里。这就像是从明尼阿波利斯的家里逃跑,搭便车去巴格达。无论您以前认为您的问题是什么,它们都会变得更糟。您的意思是惯用的而不是公理的?Prism也与Delphi产品不兼容。您可能可以比C#更快一点地将数据传输到Prism,但速度只会快一点。