Pergunta
Eu tenho um projeto de pequeno a médio porte que está em C++/CLI.Eu realmente odeio as extensões de sintaxe do C++/CLI e prefiro trabalhar em C#.Existe uma ferramenta que faz um trabalho decente de tradução de um para o outro?
EDITAR: Quando eu disse C++ gerenciado antes, aparentemente quis dizer c++/CLI
Solução
Você só poderá converter o código C++ gerenciado (e o 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 fontes - ferramentas como o .NET Reflector não serão capazes de traduzir o código para você.
Se você tiver código C++ nativo misturado, recomendo tentar mover o código nativo para uma DLL separada, substituir suas chamadas para funções DLL por funções stub facilmente identificáveis, compilar seu projeto como uma biblioteca .NET pura e usar Refletor .NET para descompilar em código C#.Em seguida, você pode substituir as chamadas para as funções stub por chamadas p-invoke para sua DLL nativa.
Boa sorte!Sinto por você!
Outras dicas
O .NET Managed C++ é como um desastre de trem.Mas você já olhou para C++ CLI?Acho que a Microsoft fez um ótimo trabalho nesse campo para tornar o C++ um cidadão .NET de primeira classe.
Não tenho certeza se isso funcionará, mas tente usar Refletor .Net juntamente com ReflexãoEmitLanguage plugar.O plug-in RelelectionEmitLanguage afirma converter seu assembly em código c#.
Em ~2004, a Microsoft tinha uma ferramenta que convertia C++ gerenciado em C++/CLI ...tipo de.Executamos isso em alguns projetos, mas, para ser honesto, a quantidade de trabalho restante para limpar o projeto não foi menor do que a quantidade de trabalho que teria sido para fazer a conversão manualmente.Não acho que a ferramenta tenha sido lançada publicamente (talvez por esse motivo).
Não sei qual versão do Visual Studio você está usando, mas gerenciamos código C++ que não será compilado com o Visual Studio 2005/2008 usando a opção /clr:oldSyntax e ainda temos uma relíquia do VS 2003 disponível para ele.
Não conheço nenhuma maneira de passar de C++ para C# de uma forma útil...você pode tentar fazer uma viagem de ida e volta através do refletor :)
Esses projetos geralmente são feitos em c++/cli porque C# não é realmente uma opção elegante para a tarefa.por exemplo.se você precisar interagir com algumas bibliotecas C++ nativas ou fazer coisas de alto desempenho em C de baixo nível.Portanto, certifique-se de que quem escolheu c++/cli não tenha um bom motivo para fazê-lo antes de fazer a troca.
Dito isto, sou altamente cético de que haja algo que faça 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).