2009-12-09 63 views

回答

0

您可以在WinDbg中使用SOS來執行此操作。

問題是找到模塊。

如果你確實得到了它,有一個'SaveModule'命令將模塊/程序集轉儲到文件。

祝你好運:)

+1

那麼,談論再試一次,你不能SaveModule一個«Run»only模塊:) – 2009-12-09 09:54:41

+0

@JB:這是從WinDbg內部,我不知道有這樣的限制。 – leppie 2009-12-09 10:40:43

+0

這就是我所說的。您可以看到帶有!DumpDomain的模塊,但不能!SaveModule它。 – 2009-12-09 10:45:07

2

試試這個(發現here):

byte[] dllAsArray; 

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

    formatter.Serialize(stream, results.CompiledAssembly); 

    dllAsArray = stream.ToArray(); 
} 
+0

這是真的。您也可以通過互聯網發送它們(例如通過WCF),將其轉換回另一端的裝配並加載它。吹我的腦海。 – gjvdkamp 2013-05-15 12:59:47

+0

是的,也適用:) – Roboblob 2013-05-16 13:24:57

+0

相反,您可以在編譯時存儲在臨時文件夾中的文件上使用File.ReadAllBytes。 – 2014-03-31 06:58:10

1

它已經因爲我這樣做,我猜,這給了你的程序的DLL使用CompilerParameters.GenerateInMemory一會兒=真正。但是,事實上,dll實際上在某個臨時文件夾中的磁盤上保存了一段時間(當它運行或某事時),因爲這是C#編譯器的工作方式(工作?)。

我記得當時對我來說這是一個問題,但我現在無法回覆細節,給我一秒鐘。你可以通過ProcessExplorer或類似的工具找出哪些文件被保存/觸摸。

相關問題