ИМХО, строка за строкой - лучший способ. Я перенес несколько проектов в стиле C ++ на управляемый язык и пробовал разные подходы; переводчики, построчно, скрипты и т. д. Со временем я обнаружил, что наиболее эффективный способ - это делать построчно, хотя сначала это кажется самым медленным способом.
Слишком много потеряно в переводчике. Ни один переводчик не идеален, и вы тратите много времени на исправление переведенного кода. Кроме того, переведенный код, как правило, уродлив и имеет тенденцию быть менее читабельным, чем код, созданный вручную. Таким образом, результатом является исправленная, не очень красивая база кода.
Несколько советов, которые я имею в строке за строкой
- Начните с определения всех типов листьев
- Для каждого типа, имеющего деструктор с нетривиальной (освобождающей памятью) реализацией IDisposable
- Включите правило FxCop, которое проверяет отсутствие вызовов Dispose, чтобы перехватить все места, использующие RAII на основе стека, и пропустило его
- Обратите особое внимание на использование byref в C ++.