VC++到C#迁移指南/方法/问题

KSH*_*KSH 6 c# c++ migration

我们计划将少数VC++ Legacy产品迁移到C#with .NET平台.我正在收集相关信息,然后再提出建议,为客户提供乐观有效的方法.我正在寻找以下细节.

  1. 将VC++迁移到C#.NET的任何一般准则
  2. 在我们开展此活动时,团队可能面临哪些问题
  3. 有现成的方法吗?我相信很多人可能已经尝试但可能没有详细信息,但在此基础上巩固这一点不仅有助于我,也有助于寻找这些信息的任何人.
  4. 互联网上有哪些好的/有效的资源?
  5. 如果此组中有任何Microsoft人员,Microsoft团队的任何建议?
  6. 架构,组件设计方法等

请帮助我获取这些信息,每一分钱都会帮助我获得良好的理解..

提前感谢那些将通过此查询分享智慧的人.

Ree*_*sey 14

通常,我最好的建议是:不要这样做.

如果你有干净的C++代码,没有理由重写它.使用C++/CLI很容易围绕遗留代码构建包装器,使其可以从C#/ .NET中使用.

这通常是一种更好,更快,更安全的方法.然后,您可以在.NET中进行新的开发,并在需要时缓慢迁移所需的任何现有代码.

话虽这么说,将代码从C++迁移到C#通常非常完整,从头开始重写(除非你如上所述换行).这主要是因为图书馆的巨大差异,而不是语言的差异.

.NET Framework提供了一个庞大的工具库,可以并且应该在编写时更改代码的体系结构.如果你只是直接将C++移植到C#,你会发现你将以非标准的方式做很多事情,而你最终会得到非常难以维护的C#代码.

根据我的经验,我的建议是首先包装你的代码.然后,如果您决定需要扩展某些功能,并且因为包装器而无法使用它,那么您可以使用全新的技术和库在C#中重写代码的一个特定部分 - 并逐个替换C++.

  • 此方法的问题是您无法在Windows Phone等安全受限的上下文中运行C++/CLI.(除非你使用`/ clr:pure`,这迫使你重写所有内容) (2认同)

Bre*_*ent 4

有一个问题是,如果您有一个复杂的类层次结构,请注意 C# 不支持多重继承,因此您可能必须重新考虑程序的结构。

编辑:另一件事要记住,.net 框架非常非常大。您可能会发现 C++ 代码中的实用程序类可以完全被 C# 中的标准库类替换。