舊問題: 我有一個帶有IL(.NET)代碼的.exe(PE)。 當它啓動時,會調用mscorlib.dll(.NET框架)函數來啓動IL代碼。 我可以提取.NET代碼段並將其附加到其他程序(調用mscorlib.dll來執行該段)嗎?可以從本機Win32程序調用.NET VM(mscorlib)來執行IL /其他內部編譯代碼格式嗎?
新問題:
我想從C#.NET程序的編譯代碼追加到可以在沒有任何.NET運行庫運行一個人,純粹的Win32應用程序,並通過動態調用mscorlib.dll中的執行它函數,如果.NET存在。這就像'可執行的木匠'技術,而不是本地編譯。
我不想寫一些.NET .exe到臨時目錄並執行它;它已經完成了,現在想通過直接在我的文件中的.NET代碼上調用.NET vm來刪除臨時文件夾(通過發出已找到的結構/會話的偏移量,或者僅通過分配正確的PE .section名稱 - 只知道一點關於PortableExecutable格式)。
更好地記錄你的問題,它*非常*不清楚。 – 2010-09-07 18:04:09
我認爲需要更多細節。我的理解是,你有一個主要是本地代碼但有一些IL的程序。您希望延遲啓動框架以提高本地程序的啓動速度,並認爲您可以通過將IL提取到其自己的程序集並動態調用它來實現此目的。它是否正確? – KeithS 2010-09-07 18:04:27
不是。它是純粹的IL,本地代碼只是對.NET加載器的引用。如果「另一個程序」無法找到它自己的框架DLL,我想提取IL,將它附加到另一個Win32 native程序中,作爲Win32 PE段並讓.NET執行它。 – 2010-09-07 18:06:48