@NBN

Как скопировать IL код с одной сборки в другую с помощью Mono.Cecil?

Имеется mixed-mode .NET сборка. Мне не важен нативный код, и я хочу скопировать IL код в новую сборку без него (нативного кода) с помощью Mono.Cecil.
Вот мой код:
ModuleDefinition module = ModuleDefinition.ReadModule(fileName);
                var name = new AssemblyNameDefinition(module.Assembly.FullName, new Version(1, 0, 0, 0));
                var asm = AssemblyDefinition.CreateAssembly(name, "greeter.exe", ModuleKind.Windows);

                foreach (TypeDefinition type in module.Types)
                {
                    asm.MainModule.Types.Add(type);
                    foreach (MethodDefinition method in type.Methods)
                    {
                        type.Methods.Add(method);
                    }
                }
                asm.EntryPoint = module.Assembly.EntryPoint;
                asm.Write(saveFileDialog1.FileName);

Но он выкидывает исключение: Type already attached. Что я делаю не так? Может есть какое-то уже готовое решение?
  • Вопрос задан
  • 303 просмотра
Пригласить эксперта
Ответы на вопрос 1
Просто так - никак. Есть вот такое https://github.com/gluck/il-repack, оно как раз про эту задачу
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы