C# 是否使用Mono.Cecil更改应用程序类型?

C# 是否使用Mono.Cecil更改应用程序类型?,c#,windows,mono,console,mono.cecil,C#,Windows,Mono,Console,Mono.cecil,如何使用Mono.Cecil将应用程序从Console应用程序类型修改为Windows应用程序类型,反之亦然?要将Console.exe转换为Windows.exe,可以使用: var file = "foo.exe"; var module = ModuleDefinition.ReadModule (file); // module.Kind was previously ModuleKind.Console module.Kind = ModuleKind.Windows; module.

如何使用Mono.Cecil将应用程序从Console应用程序类型修改为Windows应用程序类型,反之亦然?

要将Console.exe转换为Windows.exe,可以使用:

var file = "foo.exe";
var module = ModuleDefinition.ReadModule (file);
// module.Kind was previously ModuleKind.Console
module.Kind = ModuleKind.Windows;
module.Write (file);
另一种方法是选择适当的ModuleKind值。来自Cecil的消息来源:

public enum ModuleKind {
    Dll,
    Console,
    Windows,
    NetModule,
}

对于像我这样需要更多帮助的人:)

您可能需要apt软件包
libmono-cecil-cil-dev

//mono-cecil-set-modulekind-windows.cs
使用制度;
使用单盲法;
名称空间CecilUtilsApp{
CecilUtils类{
静态void Main(字符串[]参数){
var file=args[0];
var module=ModuleDefinition.ReadModule(文件);
module.Kind=ModuleKind.Windows;
模块写入(文件);
}
}
}
// -----
//生成文件
//mono-cecil-set-modulekind-eq-windows.exe:
//mcs$(shell pkg config--libs mono-cecil)。/mono-cecil-set-modulekind-windows.cs

有相当多的窗口处理和这样的,只是不会在控制台应用程序。您可能可以更改标志或入口点,但您必须将该代码注入到某个地方,使其具有任何用途(而且因为它只有一个窗口,没有实际的UI,所以不会有太多功能)。
./mono-cecil-set-modulekind-windows.exe myprog.exe