Изменить тип приложения с помощью Mono.Cecil?
Как я могу изменить приложение из Типа консольного приложения в Тип приложения Windows и наоборот с Mono.Cecil?
2 ответа
Решение
Чтобы преобразовать консоль.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. Из источника Сесила:
public enum ModuleKind {
Dll,
Console,
Windows,
NetModule,
}
Для людей, которым нужна дополнительная помощь в этом, как я :)
вам может понадобиться подходящий пакет
libmono-cecil-cil-dev
//mono-cecil-set-modulekind-windows.cs
using System;
using Mono.Cecil;
namespace CecilUtilsApp {
class CecilUtils {
static void Main(string[] args) {
var file = args[0];
var module = ModuleDefinition.ReadModule (file);
module.Kind = ModuleKind.Windows;
module.Write (file);
}
}
}
// -----
//Makefile
//mono-cecil-set-modulekind-eq-windows.exe:
// mcs $(shell pkg-config --libs mono-cecil) ./mono-cecil-set-modulekind-windows.cs
./mono-cecil-set-modulekind-windows.exe myprog.exe