2011-09-08 487 views
1

Mono.Cecil convert .exe to dll?

AssemblyDefinition sourceAssembly = AssemblyDefinition.ReadAssembly(file); 
    sourceAssembly.EntryPoint = null; 
    sourceAssembly.Write(outputFile); 

似乎沒有任何效果可言任何方式使用Mono.Cecil能到一個exe轉換爲一個dll,(刪除圖標和其他不需要的數據,刪除入口點)..

+3

是不是重命名文件不夠? – svick

+0

我很確定@ svick是正確的。如果事實如此,你甚至不需要重新命名......可悲的是,我曾經是那些完成的地方。 ;( – kenny

+0

我想將它轉換爲dll的原因是我想刪除所有不需要的數據以節省空間! – Peter

回答

5

要被管理的.exe文件轉換成一個.dll,您可以使用:

一個尚未實現塞西爾0.9.5
var file = "foo.exe"; 
var module = ModuleDefinition.ReadModule (file); 
module.Kind = ModuleKind.Dll; 
module.EntryPoint = null; 
module.Write (Path.ChangeExtension (file, ".dll")); 

一件事,就是你不能以編程方式刪除的Win​​32圖標。這是bug #3

有趣的事實:.net框架的某些.dll確實有一個入口點。

+0

是否有任何其他方法可以從中刪除win32資源?或只是將它們全部丟棄?最後我要將它保存在一個字節數組中,並從那裏加載它,我想盡可能多地去掉它,我可以! – Peter

+1

@Petoj,不是真的,不是與Cecil的當前版本無關,這將在Cecil 1.0之前修復但是我不確定這會爲你節省很多空間Win32圖標很少很大 –

+0

在我的情況中,每一點都很重要:P,但是肯定有病必須等待1.0有沒有初始發佈日期爲此?多謝你的幫助!! – Peter