왜 소스를 Visual Studio 2008 (MSBuild)과 함께 컴파일 한 다음 csc (또는 NANT) 명령 행에서 같은 바이너리 파일 (동일한 어셈블리)을 exacly 얻을 수 없습니다.vs2008로 컴파일 된 소스는 명령 줄에서 csc가 직접 컴파일 한 동일한 소스와 다른 바이너리를 생성합니다.
출력 창에서 명령을 복사 한 다음 명령을 vs2008 명령 프롬프트에 붙여 넣기 때문에 Visual Studio에서 명령 줄을 호출하는 명령 줄은 동일합니다.
나는 같은 소스를 다른 시간에 컴파일하면 어셈블리 메타 데이터의 타임 스탬프 때문에 다른 바이너리를 얻는다는 것을 알고있다. 사실, vs2008에서 생성 한 두 개의 바이너리를 서로 다른 시간에 비교하면 바이너리 데이터 간의 작은 차이가 있음을 알 수 있습니다.
하지만 vs로 컴파일 한 다음 csc로 컴파일하면 바이너리가 매우 다릅니다! 이유를 알고 계십니까? 뭐가 문제 야?
그들과 다른 점은 무엇입니까? –
Visual Studio 명령 프롬프트에서 ildasm.exe를 사용하여 어셈블리를 분해하면 어떨까요? 덤프를 저장하고 diff로 저장할 수 있습니다. –