Настройка пакета ILMerge - PullRequest
       18

Настройка пакета ILMerge

0 голосов
/ 11 ноября 2018

У меня есть проект GUI c #, в котором есть несколько дополнительных пакетов. Я хотел бы иметь исполняемый файл без каких-либо дополнительных DLL в выводе сборки. Для этого я пытаюсь использовать пакет ILMerge из nuget. Я только что установил пакет с командой:

Install-Package ilmerge -Version 3.0.18

Но в результате я получил тот же исполняемый файл, который требует DLL. Должен ли я выполнить какую-либо настройку в моем проекте, чтобы сделать ILMerge сборку пакета слитно исполняемой?

1 Ответ

0 голосов
/ 11 ноября 2018

Я могу предложить вам другой обходной путь, который работает без каких-либо пакетов nuget и просто требует некоторого кода:

  1. Вы должны добавить все ссылки на ваш проект как Embeded Resources.
  2. После этого в точке входа вашего приложения вы должны сделать следующее:

    AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;
    
    private Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
    {
        var assemblyName = args.Name.Substring(0, args.Name.IndexOf(','));
        var assembly = ...load binary from embeded resources as you wish based on assemblyName...
        return Assembly.Load(assembly);
    }
    

прибыль: без дополнительных пакетов. Прост в использовании и отладке.

проблема: трудно обслуживать, если у вас много внешних пакетов. Необходимо добавить их вручную в Embeded Resources.

...