我们有一个 120 万行的旧版 Visual C++ 6 代码库,并且正在考虑以不同的方式对其进行现代化改造。一个想法是更改此代码以使其作为 C++/CLI 代码编译为 CIL,然后使用 Reflector 之类的工具将其反编译回 C#,然后继续维护该代码库。
有没有人做过这样的事情?听起来可行吗?
没有 CLI 或 Reflector 的直接经验,但我猜你想出的东西最终可能看起来像丑陋的 C#。
为什么不尝试转换少量有代表性的文件来看看会发生什么?
我的预感是,将代码升级到 VS10 并保持 C++ 会更好,而且可能更容易。
如果您只是通过/clr
,您最终会在使用库函数的任何地方使用 C++ 互操作。Reflector 不知道如何处理这个问题。将 C++ 标准库的使用转换为 .NET 库没有捷径可走,没有 1:1 的相关性,而且架构设计也往往完全不同。
对于执行纯计算的函数,您可能会得到一些丑陋但有效的东西。