Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
.NET 4.x

Сообщение при отсутствии dll

14.02.2018, 19:51. Показов 2658. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Как сделать системное предупреждении при отсуствии dll подключенных через uses или других недостающих эллементов.

Версия: NET Framework 4.0
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2018, 19:51
Ответы с готовыми решениями:

Бинарная сериализация при отсутствии оригинальных типов
Добрый день! Мне необходимо реализовать сериализацию массива объектов. Использую бинарную сериализацию. Проблема в том, что...

Почему не запускается проект при отсутствии ошибок?
Добрый вечер, форумчане Подскажете, почему проект компилируется нормально, но не запускается? (С#, VS 2013 Ultimate). Лог выдает это: ...

Как избежать ошибки при отсутствии значения в textBox?
У меня есть три кнопки типа textbox для которых вычисляется произведение,когда я хочу найти произведение 2 и 3,а в первое ничего не...

18
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
14.02.2018, 20:02
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
при отсуствии dll подключенных через uses
Во первых, не uses, а using, во вторых это вовсе не подключение DLL.

Узнать об отсутствии сборок-зависимостей можно подписавшись на событие AppDomain.AssemblyResolve.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
14.02.2018, 20:06
Alexandr_7, подпишись на событие AssemblyResolve и выводи в обработчике необходимое тебе сообщение.

Цитата Сообщение от Alexandr_7 Посмотреть сообщение
dll подключенных через uses
Что такое uses и как это подключает dll?
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
14.02.2018, 20:33  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
Во первых, не uses, а using, во вторых это вовсе не подключение DLL.
Узнать об отсутствии сборок-зависимостей можно подписавшись на событие AppDomain.AssemblyResolve.
Да извини. Ошибся. Не понял на счет AppDomain.AssemblyResolve.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
14.02.2018, 20:52
Alexandr_7, в начале Main:
C#
1
AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;
Обработчик события
C#
1
2
3
4
5
6
static Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
{
    MessageBox.Show("Отсутствует сборка: " + args.Name, "Ошибка");
    Application.Exit();
    return null;
}
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
14.02.2018, 22:26  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
static Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
        {
            MessageBox.Show("Отсутствует сборка: " + args.Name, "Ошибка");
            Application.Exit();
            return null;
        }
 
        public frmMain()
        {
            AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;
            InitializeComponent();
        }
Не помогает.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
14.02.2018, 22:29
Alexandr_7, я же сказал что подписку на событие нужно разместить в начале метода Main. И на всякий случай уточняю - речь же идет о проверке для управляемых сборок? Потому что для неуправляемых библиотек этот способ не подходит.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
14.02.2018, 22:31  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Alexandr_7, я же сказал что подписку на событие нужно разместить в начале метода Main. И на всякий случай уточняю - речь же идет о проверке для управляемых сборок? Потому что для неуправляемых библиотек этот способ не подходит.
Какое начало Main разве frmMain() не подходит по сути это начало у WinForms приложений
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2018, 22:33
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
по сути это начало у WinForms приложений
Это вам так только кажется. Любое исполняемое приложение начинается с точки входа (метод Main()).
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
14.02.2018, 22:34
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Какое начало Main
Обычное. Смотри файл Program.cs

Цитата Сообщение от Alexandr_7 Посмотреть сообщение
разве frmMain() не подходит по сути это начало у WinForms приложений
Нет.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
14.02.2018, 22:38  [ТС]
Все разобрался. Спасибо.

Добавлено через 2 минуты
А можно сделать получение именно имя файла а не имя решения.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
14.02.2018, 22:55
Лучший ответ Сообщение было отмечено Alexandr_7 как решение

Решение

Alexandr_7, какого решения? Свойство Name возвращает имя сборки которое по определению не включает расширение и включает такую информацию как версия. культура, маркер открытого ключа. Если нужно только имя, то вырежи его Split-ом или используй класс AssemblyName
C#
1
2
3
4
5
6
7
static Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
{
    string dllName = new AssemblyName(args.Name).Name + ".dll";
    MessageBox.Show("Отсутствует сборка: " + dllName, "Ошибка");
    Application.Exit();
    return null;
}
1
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
15.02.2018, 14:41  [ТС]
Спасибо. То что нужно.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
15.02.2018, 20:45  [ТС]
Так заметил такой вот баг
C#
1
2
3
4
5
6
7
8
9
private void btnQuestionsAdd_Click(object sender, EventArgs e)
        {
            frmAddQuestions frmAddQuestions = new frmAddQuestions();
            if (frmAddQuestions.frmShow("Добавление нового квеста", "Добавить", "Отмена", out string qName, out string qText, out int qPoints) == DialogResult.OK)
            {
                MainQuestions.Add_Questions(qName, qText, qPoints);
                cmbQuestions.Items.Add(MainQuestions.qName[MainQuestions.qQuestions.Count-1]);
            }
        }
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
15.02.2018, 20:49
Это не баг, если вы внимательно причитаете документацию. Там есть упоминание про сборки с ресурсами.
Important

Beginning with the .NET Framework 4, the ResolveEventHandler event is raised for all assemblies, including resource assemblies. In earlier versions, the event was not raised for resource assemblies. If the operating system is localized, the handler might be called multiple times: once for each culture in the fallback chain.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
15.02.2018, 20:51  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
Это не баг, если вы внимательно причитаете документацию. Там есть упоминание про сборки с ресурсами.
Ну как его избежать?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
15.02.2018, 20:52
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Ну как его избежать?
Никак. Если у вас нет сборок с ресурсами, просто пропускайте их...
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,898
15.02.2018, 20:57  [ТС]
Не понял. Я просто пытаюсь вызвать самодельное модальное окно но мне выдает вот эту вот ошибку. Ошибка происходит при создании формы вот здесь
C#
1
frmAddQuestions frmAddQuestions = new frmAddQuestions();
Как этого избежать но чтобы метод проверки наличия библиотек тоже был. Хотя в таком случае легче уж в Main сделать самодельный метод проверки используемых dll
Тогда воарос а есть ли метод который проверит наличия этих библиотек либо в папке с прогой либо зарегестрированными в системе
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
16.02.2018, 03:02
заверни в try-catch...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2018, 03:02
Помогаю со студенческими работами здесь

Как прервать выполнение тестового метода при отсутствии соединения с Интернет
В проекте с юнит-тестами (VS 2010) есть метод, который тестирует некую функцию. Но чтобы ее протестировать, нужно инет-подключение....

Как при создании своей dll подключить туда сторонние dll
Здравствуйте, я работаю в связке C# - Oracle. Если коротко, то вопрос звучит так: "Как при создании своей dll подключить туда сторонние...

Сообщение об отсутствии MSVCP71.dll при запуске Acronis OS Selector
Здравствуйте, уважаемые форумчане! Пытаюсь установить программу Acronis OS Selector к себе на компьютер, но почему-то возникает следующая...

Сообщение об отсутствии MSVCP100.dll при запуске Medal of Honor Warfighter
При запуске игры MOHW вылетает ошибка "запуск невозможен,нет мол MSVCP100.dll.попробуйте переуст.программу" Проблема вылезла после...

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual Studio 2013. При компиляции выдает ошибку...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru