Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
16 / 16 / 8
Регистрация: 18.03.2014
Сообщений: 268
.NET 4.x

Зависимость от других DLL и динамическая их загрузка

23.06.2015, 08:50. Показов 3575. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При компиляции DLL было использовано 5 других DLL ( References ).
Скриншот:



Что надо использовать чтобы подгрузить собственно эту dll и 5 других как бы ей в References.
Где-то видел что надо использовать LoadModule, но как им пользоваться не понял.

P.S Извиняюсь за столько корявое объяснение. Думаю суть ясна.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2015, 08:50
Ответы с готовыми решениями:

Как узнать зависимость DLL-ки от других DLL-ек?
Есть DLL-ка, она в свою очередь подгружает другие DLL-ки, а так же использует соответственно тулфейн свого компилятора и тд. Есть какая...

Динамическая загрузка DLL
Добрый день, есть DLL написанная на Delphi: library Project1; uses System.SysUtils, System.Classes, Winapi.Windows, ...

Динамическая загрузка DLL
Доброго времени суток! Создал dll с добавление класса, как учили: http://msdn.microsoft.com/ru-ru/library/ms235636.aspx. Далее,...

13
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2015, 10:13
Цитата Сообщение от Hopeco Посмотреть сообщение
Думаю суть ясна.
Не совсем, если честно...
Тот метод, что вы указали, используется, во-первых, именно при динамической загрузке, и, во вторых, для работы с т.н. NET модулем. Он представляет из себя ту же dll, только без манифеста, и работать может только в составе сборки (вида .exe или .dll).
А в вашем случае, как я понял, нужна простая ссылка на вашу dll, и соответственно нужны она и все dll, на которые она ссылается.
0
16 / 16 / 8
Регистрация: 18.03.2014
Сообщений: 268
23.06.2015, 10:58  [ТС]
insite2012, если путаешься загрузить dll без этих то пишет: Не удается загрузить один или более запрошенных типов. Обратитесь к свойству LoaderExceptions для получения дополнительных сведений.
И если всё таки сделать загрузку по такому принципу:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
OpenFileDialog openFileDialog1 = new OpenFileDialog();
 
            openFileDialog1.InitialDirectory = @"C:\";
            openFileDialog1.Filter = "DLL files (*.dll)|*.dll";
            openFileDialog1.FilterIndex = 1;
            openFileDialog1.RestoreDirectory = true;
 
            Assembly unity = null; ;
 
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Clear();
                byte[] assem = System.IO.File.ReadAllBytes(openFileDialog1.FileName);
                unity = Assembly.Load(assem);
            }
 
            Type[] types = null;
 
            if (unity != null)
            {
                try
                {
                    types = unity.GetTypes();
                }
                catch (ReflectionTypeLoadException ex)
                {
                    types = ex.Types;
                }
 
                if (types != null)
                {
                    foreach (Type type in types.Where(t => t != null))
                    {
                        if (type.IsClass == true)
                        {
                            textBox1.Text += type.ToString() + "\r\n";
                        }
                    }
                }
            }
то насколько я понял теряется часть ~~ dll классов или я что-то не так понял?

Добавлено через 9 минут
Сейчас проверил действительно теряется часть классов из этой dll.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2015, 11:12
Цитата Сообщение от Hopeco Посмотреть сообщение
действительно теряется часть классов из этой dll.
Все библиотеки (ваша и те, на которые она ссылается) лежат рядом в одной папке?
0
16 / 16 / 8
Регистрация: 18.03.2014
Сообщений: 268
23.06.2015, 11:50  [ТС]
insite2012, да.

Добавлено через 30 минут

Картинка как выглядит директория
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2015, 12:53
Hopeco, я попробовал ради интереса. Создал dll, в ней метод. Потом создал вторую dll, в ней ссылка на первую и вызов метода из нее. И потом создал консольку, в которой через отражение создал экземпляр класса из второй dll (в которой используется первая) и вызвал метод (внутри которого вызывается экземплярный метод первой dll).
И все отлично сработало.
0
16 / 16 / 8
Регистрация: 18.03.2014
Сообщений: 268
23.06.2015, 13:04  [ТС]
insite2012, если есть возможность вот
Assembly-CSharp-firstpass.dll – к которой линкаем другие
Вложения
Тип файла: rar Managed.rar (2.45 Мб, 12 просмотров)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2015, 13:11
Hopeco, то есть, вам надо к вашей библиотеке добавить ссылки на все те что в архиве и динамически создать тип что в ней определен. Так?
0
16 / 16 / 8
Регистрация: 18.03.2014
Сообщений: 268
23.06.2015, 13:18  [ТС]
insite2012, да.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2015, 13:31
Hopeco, один вопрос: а зачем вы библиотеки из FCL хотите хранить рядом с вашей? Они и так должны присутствовать на машине пользователя.
0
16 / 16 / 8
Регистрация: 18.03.2014
Сообщений: 268
23.06.2015, 13:34  [ТС]
insite2012, потому что это часть игрового движка UNITY UNITY решает что в этой папке лежит, а мой код лишь в 1 файле.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2015, 13:41
Цитата Сообщение от Hopeco Посмотреть сообщение
это часть игрового движка UNITY
Понятно. Из всех что в архиве ваша только одна библиотека? Или, как я понял, ваших там 5 библиотек?
0
16 / 16 / 8
Регистрация: 18.03.2014
Сообщений: 268
23.06.2015, 13:52  [ТС]
insite2012, одна моя библиотека и к ней подключается 5 + ещё 3 ( System, System.Core, System.Xml ) на скриншоте что я кидал сначала видно.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2015, 14:11
Лучший ответ Сообщение было отмечено Hopeco как решение

Решение

Hopeco, вот накидал тестовый проект. Там проект тестовой консоли и проект кастомной библиотеки, в которой используются уже ваши. И все работает. Я правда не знаю, что в ваших библиотеках, но в своей специально создал пару объектов из них, и все работает без ошибок.
Вот сам проект, смотрите.
Вложения
Тип файла: rar UnityLibrary_Test.rar (1.06 Мб, 23 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2015, 14:11
Помогаю со студенческими работами здесь

Динамическая загрузка dll
Пытаюсь сделать так HMODULE hUser32 = LoadLibraryA("user32.dll"); FARPROC ProcAdd = GetProcAddress(hUser32, "MessageBoxA"); Сейчас как...

Динамическая загрузка DLL
Добрый день! Прочитал основы DLL для начинающих, подключил динамически dll. Заинтересовала фраза Имеется огромная dll , и...

Динамическая загрузка DLL
Я написал библиотеку и использую ее в консольном приложении подключая динамически. В конфигурации x64 все работает нормально, а в...

Динамическая загрузка DLL
Здравствуйте, У меня возникла проблема с динамической загрузкой библиотеки. Есть один файл - ****.dll , который нужно подключить к...

Динамическая загрузка dll
Программа использует функции из нескольких dll. Запуск программы в течение дня происходит многократно. С целью ускорения запуска программы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru