2009-12-09 33 views

Trả lời

0

Bạn có thể thực hiện việc này bằng SOS trong WinDbg.

Sự cố là tìm mô-đun.

Nếu bạn nhận được bàn tay của bạn trên đó, có một 'SaveModule' lệnh để đổ mô-đun/lắp ráp để tập tin.

Chúc may mắn :)

+1

Vâng, nói về việc thử lại, bạn không thể SaveModule một mô-đun «Chạy» duy nhất :) –

+0

@JB: đây là từ bên trong WinDbg, tôi không biết những hạn chế như vậy. – leppie

+0

Đó là những gì đang nói. Bạn có thể thấy mô-đun với! DumpDomain, nhưng bạn không thể! SaveModule nó. –

2

Hãy thử điều này (tìm thấy here):

byte[] dllAsArray; 

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

    formatter.Serialize(stream, results.CompiledAssembly); 

    dllAsArray = stream.ToArray(); 
} 
+0

Điều này đúng. Bạn cũng có thể gửi chúng qua internet (thông qua WCF ví dụ), bỏ nó trở lại một hội ở đầu kia và tải nó. Làm tan chảy tâm trí tôi. – gjvdkamp

+0

Yup, hoạt động cũng :) – Roboblob

+0

Thay vào đó bạn có thể sử dụng File.ReadAllBytes trên tệp được lưu trữ trên thư mục temp tại thời điểm biên dịch. –

1

Nó được một lúc kể từ khi tôi đã làm điều này, tôi đoán rằng chương trình trao cho bạn những DLL sử dụng CompilerParameters.GenerateInMemory = Thật. Tuy nhiên, điều này thực sự được lưu trên đĩa trong một số thư mục tạm thời trong một thời gian ngắn (trong khi nó chạy hoặc một cái gì đó ...) vì đó là cách trình biên dịch C# hoạt động (hoạt động?).

Tôi có thể nhớ đây là vấn đề đối với tôi khi đó nhưng tôi gặp sự cố khi lấy lại chi tiết ngay bây giờ, gimme a sec. Bạn có thể probablby tìm thấy điều này với ProcessExplorer hoặc các công cụ tương tự để xem các tập tin đã được lưu/chạm vào.

Các vấn đề liên quan