• Как сбросить Балласт создаваемый библиотекой Newtonsoft.Json c#?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Дж.Рихтер (тот самый, который CLR via С#) предлагает в таких случаях разместить библиотеку в ресурсы сборки и подгружать ее оттуда когда попросят.
    У меня это сделано так:

    В файле Program.cs
    const string DOCUMENT_FORMAT_OPEN_XML = "DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
    private static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                AppDomain.CurrentDomain.AssemblyResolve += (sender, e) =>
                {
                    switch (e.Name)
                    {
                        case DOCUMENT_FORMAT_OPEN_XML: return Assembly.Load(Properties.Resources.DocumentFormat_OpenXml);
                        default: return null;
                    }
                };
    
                Application.Run(new MainFrom());
            }


    P.S. Создатель ILMerge прокоментировал этот способ: "Если б я знал что так можно, то бы не стал ILMerge делать".
    Ответ написан
    3 комментария