Traduzir C ++ / CLI para C #

Eu tenho um projeto pequeno para médio que está em C ++ / CLI. Eu realmente odeio as extensões de syntax de C + + / CLI e prefiro trabalhar em c #. Existe uma ferramenta que faz um trabalho decente de traduzir um para o outro?

EDIT: Quando eu disse que o c ++ gerenciado antes eu aparentemente quis dizer c + + / CLI

Você só pode traduzir código C ++ gerenciado (e código C ++ / CLI) para C # se o código C ++ for gerenciado puro. Se não for – ou seja, se houver código nativo incluído nas fonts – ferramentas como o .NET Reflector não poderão traduzir o código para você.

Se você tiver código C ++ nativo misturado, então eu recomendo tentar mover o código nativo para uma DLL separada, replace suas chamadas para funções DLL por funções stub facilmente identificáveis, compilar seu projeto como uma biblioteca .NET pura e, em seguida, usar Refletor .NET para descompilar em código C #. Em seguida, você pode replace as chamadas para as funções stub por chamadas p-invoke para sua DLL nativa.

Boa sorte! Sinto por você!

O .NET Caged gerenciado é como um desastre de trem. Mas você olhou para C ++ CLI? Acho que a Microsoft fez um ótimo trabalho nesse campo para tornar o C ++ um cidadão .NET de primeira class.

http://msdn.microsoft.com/pt-br/magazine/cc163852.aspx

Não tenho certeza se isso funcionará, mas tente usar o .Net Reflector junto com o plug-in ReflectionEmitLanguage . O plug-in RelelectionEmitLanguage afirma converter seu assembly em código c #.

Voltar ~ 2004 A Microsoft tinha uma ferramenta que convertia o C ++ gerenciado em C ++ / CLI … mais ou menos. Corremos em alguns projetos, mas, para ser sincero, a quantidade de trabalho que resta a limpar o projeto não foi menor do que a quantidade de trabalho que teria sido fazer a conversão à mão, em primeiro lugar. Eu não acho que a ferramenta já tenha sido lançada em público (talvez por esse motivo).

Eu não sei qual versão do Visual Studio você está usando, mas nós gerenciamos o código C ++ que não irá compilar com o Visual Studio 2005/2008 usando o switch / clr: oldSyntax e ainda temos uma relíquia do VS 2003 por aí.

Eu não sei de qualquer maneira de ir de C + + para C # de uma forma útil … você poderia tentar round tropeçar através de reflector 🙂

Esses projetos geralmente são feitos em c ++ / cli porque o C # não é realmente uma opção elegante para a tarefa. por exemplo, se você tiver que fazer interface com algumas bibliotecas C ++ nativas, ou fazer coisas de alto desempenho em nível baixo C. Portanto, certifique-se de que quem escolheu o c ++ / cli não tenha uma boa razão para fazê-lo antes de fazer a troca.

Dito isto, eu sou altamente cético, há algo que faz o que você pede, pela simples razão de que nem todo código C ++ / cli é traduzível para C # (e provavelmente vice-versa também).