2009-12-09 2 views

답변

0

WinDbg의 SOS를 사용하여이 작업을 수행 할 수 있습니다.

문제는 모듈을 찾는 것입니다.

손에 익숙해지면 모듈/어셈블리를 파일로 덤프하는 'SaveModule'명령이 있습니다.

행운을 빕니다 :)

+1

음, 다시 시도해 보자. SaveModule을«실행»전용 모듈이라고 할 수는 없다. –

+0

@JB : 이것은 WinDbg에서 온 것으로, 이러한 제한을 알지 못한다. – leppie

+0

그게 무슨 말인지. ! DumpDomain을 사용하여 모듈을 볼 수는 있지만 저장할 수는 없습니다! SaveModule it! –

2

보십시오이 (발견 here) : 내가 이런 짓을하기 때문에, 나는 당신을 손 프로그램이 DLL이 CompilerParameters.GenerateInMemory를 사용하는 추측하고있어 잠시

byte[] dllAsArray; 

using (MemoryStream stream = new MemoryStream()) 
{ 
    BinaryFormatter formatter = new BinaryFormatter(); 

    formatter.Serialize(stream, results.CompiledAssembly); 

    dllAsArray = stream.ToArray(); 
} 
+0

사실입니다. 인터넷을 통해 (예를 들어 WCF를 통해) 보낼 수도 있고 다른 쪽 끝의 어셈블리로 다시 캐스팅하고로드 할 수도 있습니다. 짜릿했다. – gjvdkamp

+0

그래, 그것도 작동합니다 :) – Roboblob

+0

대신 컴파일시 임시 폴더에 저장된 파일에 File.ReadAllBytes를 사용할 수 있습니다. –

1

그것은이었다 = 참된.

그러나 실제로는 C# 컴파일러가 작동하는 방식 (작동 했습니까?) 때문에 dll은 잠시 동안 임시 폴더에서 디스크에 저장됩니다 (실행되는 동안이나 ...).

저는이 문제가 저에게있어서 당황 스럽다는 것을 기억하지만, 지금은 세부 사항을 되 찾는 데 어려움을 겪고 있습니다. ProExplorer 또는 이와 유사한 도구를 사용하여 저장/수정 된 파일을 확인할 수 있습니다.