2011-01-11 2 views
4

직장에서 C# 프로그램을 유지 관리하며 하드 디스크 충돌로 인해 이미 배포 된 버전의 코드가 많이 손실됩니다 (git 저장소를 자주 푸시하지 않으면 내 자신의 잘못입니다). 충분히) 지금 나는 프로그램에 약간의 변화를 만들어야한다. 전 프로그램의 이전 버전의 소스 코드가 있고 exe 파일을 디 컴파일하고 오래된 소스와 병합하여 잃어버린 코드를 복원하고 싶습니다.부분 소스 코드를 사용하여 C# Exe를 디 컴파일하십시오.

리플렉터와 같은 도구로 디 컴파일 할 수 있지만 이전 코드와 직접 병합하고 싶지는 않습니다. 변경 사항을 다시 코딩 할 수 있기 때문에 (약 1-2 일의 작업). 그게 가능합니까 아니면 코드 덤프를 수동으로 통과해야합니까?

+0

내가 자동화 된 컴파일 유틸리티를 모르는 훨씬 더 내가 가능한 이러한 유틸리티는 실제로 없다 생각합니다. 리플 렉터는 .NET 디스 어셈블리/디 컴파일을위한 최고의 도구이며, 잘 작동합니다 ... – fardjad

답변

7

이전 코드를 다시 컴파일하고 리플렉터를 사용하여 디 컴파일하는 것이 좋습니다.

그런 다음 현재 실행 파일을 리플렉터로 디 컴파일하고 diff를 실행하십시오. 그렇게하면 변경 사항 만 볼 수 있으며 디 컴파일 된 코드와 원래 소스를 비교하는 것보다는 이전 소스 코드에 적용 할 수 있습니다. 이는 엄청난 양의 흥미롭지 않은 차이를 분명히 나타냅니다 (주석, 한 가지!).

솔직히 말해서 나는 그게 어떻게 나아질 지 알 수 없습니다. 물론 수동 프로세스 일 것이지만 여전히 시간을 절약해야합니다.

+0

우수 아이디어! – gsharp

+0

아주 좋습니다. 나는 다른 제안을 기다리는 동안 잠시 질문을 떠날 것이지만, 나는 이것을 나중에 받아 들일 것이라고 생각한다. – dbemerlin

+0

필연적으로, patch를 사용하여 완전히 자동 인 diff를 적용 할 수 있습니다. 물론 이것은 전체 diff를 승인한다고 가정합니다. –

0

나는 이것을 한 번해야했다. Dis #을 추천한다.

편집 :
지금, ILSpy

+0

Dis #은 내 문제를 해결하기 위해 리플렉터 이상을 수행하지 않는 것 같아서 문제에 돈을 쓸 수 없어 매우 제한된 재판을받을 수 있습니다. – dbemerlin

+0

나는 리플렉터가 어떤 것을 할 수 있는지 정확히 알지 못한다. 그러나 Dis #는 한 번에 (C# 또는 VB.NET 또는 Delphi.NET에서) 모든 소스 파일을 생성 할 수있을뿐만 아니라 전체 Visual Studio 프로젝트, 모든 참조를 추가합니다. 내가 시도한 마지막 시간에 컴파일 된 프로젝트가 바로 컴파일되었습니다 ... 추신 : 나는 당신을 위해 그것을 할 것이라고 말했어. (원한다면), 네, 네 이메일 주소를 알려줘. –