.NET 4.x Как грамотно использовать много библиотек - C#
Формулировка задачи:
Добрый вечер. Перейду сразу к делу: имеется некое приложение, которое использует элементы управления Telerik. Те, кто сталкивался с Telerik, знает, что для обеспечения переносимости приложения (то есть возможности его запускать на компьютерах где нет telerik'а) он выгружает при сборке проекта целую кучу dll файлов. В моем случае их порядка 40 штук.
Моя цель - совместить все эти библиотеки в единый dll файл, которым сможет пользоваться приложение.
Я несколько часов пытался сделать это через программу ILMerge, а так же его собрата ILMerge GUI. Ничего не вышло. Постоянно появляются те или иные ошибки (типа одинаковых типов, ключей, словарей и прочее прочее). Ничего не вышло.
И тут в поисках я наткнулся на интересный способ совмещения библиотек в проекте (источник http://www.telerik.com/blogs/how-to-...pf-application). Благодаря MSBuild таску получается практически то, что нужно - все библиотеки включаются в исполняемый файл. Однако это не совсем то, чего хочу я. Я попытался сделать то же самое с проектом-библиотекой. Получил на выхлопе жирненький dll файл (как и должно быть). Но я не могу получить доступ к вложенным в него библиотекам Telerik'а. Подскажите пожалуйста, как можно решить мою проблему.
Решение задачи: «.NET 4.x Как грамотно использовать много библиотек»
textual
Листинг программы
public App() { AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve; this.InitializeComponent(); } private Assembly CurrentDomainOnAssemblyResolve(object sender, ResolveEventArgs args) { var assFileName = new AssemblyName(args.Name).Name + ".dll"; var ass = Assembly.LoadFrom("ИМЯ_БИБЛИОТЕКИ.dll"); //Здесь указать то, что на выходе из проекта библиотек if (ass.GetManifestResourceNames().Contains(assFileName)) { using (var stream = ass.GetManifestResourceStream(assFileName)) { Byte[] assemblyData = new Byte[stream.Length]; stream.Read(assemblyData, 0, assemblyData.Length); return Assembly.Load(assemblyData); } } return null; //Ошибка }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д