Дж.Рихтер (тот самый, который 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 делать".