2011-09-08 169 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