.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; //Ошибка
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д