将C ++ / CLI转换为C#

我有一个C ++ / CLI中的小型到中型项目。 我真的很讨厌C ++ / CLI的语法扩展,我更喜欢在C#中工作。 是否有一种工具可以很好地将一种工具转换为另一种工具?

编辑:当我说托管c ++之前,我显然是指c ++ / CLI

如果C ++代码是纯托管的,您只能将托管C ++代码(和C ++ / CLI代码)翻译为C#。 如果不是 – 即如果源中包含本机代码 – 像.NET Reflector这样的工具将无法为您翻译代码。

如果您确实混合了本机C ++代码,那么我建议尝试将本机代码移动到单独的DLL中,通过易于识别的存根函数替换对DLL函数的调用,将项目编译为纯.NET库,然后使用.NETreflection器解编译成C#代码。 然后,您可以通过对本机DLL的p调用调用来替换对存根函数的调用。

祝好运! 我觉得你!

.NET托管C ++就像火车残骸。 但是你看过C ++ CLI吗? 我认为微软在这个领域做得很好,使C ++成为一流的.NET公民。

http://msdn.microsoft.com/en-us/magazine/cc163852.aspx

我不确定这是否有效,但尝试使用.Net Reflector和ReflectionEmitLanguage插件。 RelelectionEmitLanguage插件声称将程序集转换为c#代码。

返回〜2004 Microsoft确实有一个工具可以将托管C ++转换为C ++ / CLI …… 我们在几个项目中运行它,但说实话,清理项目的工作量不亚于首先手工完成转换的工作量。 我不认为该工具曾经公开发布(可能是因为这个原因)。

我不知道您使用的是哪个版本的Visual Studio,但是我们使用/ clr:oldSyntax开关管理了无法使用Visual Studio 2005/2008编译的C ++代码,我们仍然有一个文件VS 2003。

我不知道从一个有用的方式从C ++到C#的任何方式……你可以尝试通过reflection器将它绊倒:)

这些项目通常在c ++ / cli中完成,因为C#对于任务来说并不是一个优雅的选项。 例如,如果您必须与某些本机C ++库接口,或者在低级别C中执行非常高性能的操作。那么只需确保选择c ++ / cli的人没有充分的理由在执行切换之前执行此操作。

话虽如此,我非常怀疑有什么能满足你的要求,原因很简单,并非所有C ++ / cli代码都可以转换为C#(反之亦然)。