|
2 / 2 / 0
Регистрация: 09.10.2012
Сообщений: 23
|
|
К проекту подключать библиотеки, и в момент обращения проверять версию09.10.2012, 03:36. Показов 1769. Ответов 14
Метки нет (Все метки)
Здравствуйте, коллеги!
Надеюсь на Вашу помощь. Необходимо к проекту подключать библиотеки, и в момент обращения проверять версию, а если есть более новая, то её заменять новой, копируя с сервера. Библиотеки пишутся на C#. Подключаю и вызываю методы через Assembly.LoadFrom. Но если во время сессии программы я уже вызывал из библиотеки какой-то метод, удалить эту библиотеку и заменить на новой версии уже не получается, - она уже используется, а сделать некий unload я не знаю как. Может быть кто-то сталкивался? Читал про домены приложений, что нужно создавать новый - но уж больно заморочено.
0
|
|
| 09.10.2012, 03:36 | |
|
Ответы с готовыми решениями:
14
Как подключать библиотеки DirectX 11 к проекту Как подключать ресурсы к проекту? Проверять, были ли обращения к заданной папке со времени, введенного пользователем |
|
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
|
||||||
| 09.10.2012, 04:13 | ||||||
1
|
||||||
|
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
|
|
| 09.10.2012, 04:15 | |
|
Если не хочешь заморачиваться с доменами напиши loader, который сначала сливает последнюю версию dll с сервера, а потом запускает твою прогу, тогда выгружать ничего не придется и прога будет работать на свежих dll
1
|
|
|
2 / 2 / 0
Регистрация: 09.10.2012
Сообщений: 23
|
|
| 09.10.2012, 04:24 [ТС] | |
|
В том то и штука, - работает к примеру человек в программе, вызывает метод из библиотеки - загружает дочернюю форму, - и если библиотека была переписана, и на сервере лежит новая версия, - она должна обновиться, без перезапуска всего приложения, и вызваться обновлённый метод.
Добавлено через 5 минут а как из этого вызвать метод? >> AssemblyName.GetAssemblyName(filePath).V ersion;
0
|
|
|
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
|
||
| 09.10.2012, 05:23 | ||
|
1
|
||
|
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
|
|
| 09.10.2012, 05:28 | |
|
Алгоритм прост
1 Запускаешь программу 2 Проверяешь (все?) подгруженные сборки при помощи метода GetAssemblies 3 Качаешь новые версии библиотек. После того как программа полностью загрузилась в память, библиотеки можно удалять/менять 4 Вызываешь Application.Restart()
1
|
|
|
2 / 2 / 0
Регистрация: 09.10.2012
Сообщений: 23
|
|
| 09.10.2012, 06:27 [ТС] | |
|
Версию и прочую информацию типа даты и времени изменения файла dll (причем мне кажется по последнему признаку удобнее ориентироваться, нежели чем версия dll, но не суть) взять особой проблемы нет. Проблема в том, что когда из родительской формы открываю упакованную в dll дочернюю, после этого не даёт удалить саму dll-библиотеку.
Про сборки что-то читал, но пока практического опыта с этой штукой нет, и признаюсь понимания тоже. Сборки - это вроде набора библиотек? Я вот читал, что сборки бывают приватными и разделяемыми. Разделяемые можно хранить где-то на сервере и использоваться всеми клиентами?
0
|
|
|
2 / 2 / 0
Регистрация: 09.10.2012
Сообщений: 23
|
||
| 18.10.2012, 06:37 [ТС] | ||
|
А есть пример хоть какой-нибудь самый завалящий? Ничего найти не могу.
0
|
||
|
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
|
|
| 18.10.2012, 07:03 | |
|
Evgeniy, я недумаю что ваша программа настолько критична чтобы извращаться подобным образом, реализуйте обычный OnceClick, который позволит делать обновление всего проекта в 1 клик с сервера и не заморачивайтесь
1
|
|
|
2 / 2 / 0
Регистрация: 09.10.2012
Сообщений: 23
|
|
| 18.10.2012, 07:51 [ТС] | |
|
А что такое OnceClick? Проблема в том, что в системе работает порядка тысячи пользователей, и как раз в этом проблема и состоит: если меняется библиотека, чтобы программа получила изменённый функционал, её нужно перезагрузить. А когда я в программе делаю Assembly.LoadFrom библиотеки, после этого я библиотеку не могу ни удалить, ни соответственно заменить новой версией, - операционная система блокирует её. Т.е. я вызываю из библиотеки дочернюю форму, после этого закрываю, даже этому объекту делаю =null, а библиотека уже заблокирована. А хотелось бы, чтобы поработал человек в дочерней форме, закрыл, работает в другой, пытается опять открыть первую, и тут программа видит, что для этой библиотеки есть на сервере более новая версия, она её копирует, заменяет заместо старой, и открывает уже новую версию.
Я читал что-то про сборки, дескать есть приватные, а есть разделяемые. Моя модель, если я правильно понимаю, приватная. А разделяемая - это набор библиотек лежит на сервере, и клиентские приложения по мере надобности обращаются к ним и вызывают необходимые методы. Т.е. я изменяю библиотеку, подкладываю вместо старой, и клиентские приложения при следующем вызове обращаются уже к ней, как к новой версии, - прямо с сервера. Так вот мне и интересно, ведь наверняка кто-то таким занимался, - где можно подсмотреть хотя-бы тривиальный некий пример кода, или что-то почитать, только не абстрактное?
0
|
|
|
2 / 2 / 0
Регистрация: 09.10.2012
Сообщений: 23
|
|
| 26.10.2012, 02:55 [ТС] | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 09.10.2012
Сообщений: 23
|
|
| 29.10.2012, 06:44 [ТС] | |
|
Ну неужели никто не сталкивался???
0
|
|
|
|
|
| 29.10.2012, 11:44 | |
|
Вопрос интересный, поэтому попробовал состряпать рецепт на основе многих dll-ок вместо одной.
Пока искал, нашел вот это: http://msdn.microsoft.com/en-u... s.80).aspx Работа дотнетного кода происходит в т.н. доменах - думаю, копать туда. Добавлено через 1 минуту туда же http://people.oregonstate.edu/... chives/466 Добавлено через 8 минут и еще вдогонку. В .net 3.5 появилась такая штука, как add-in's. http://blogs.msdn.com/b/jackg/... 68068.aspx http://www.matthidinger.com/ar... h-wpf.aspx
1
|
|
|
2 / 2 / 0
Регистрация: 09.10.2012
Сообщений: 23
|
|
| 30.10.2012, 03:56 [ТС] | |
|
Вопрос решил. Всем спасибо.
0
|
|
| 30.10.2012, 03:56 | |
|
Помогаю со студенческими работами здесь
15
Как подключать библиотеки? Как подключать библиотеки в VS 2012 Как создавать и подключать библиотеки? Как подключать dll библиотеки в VS Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|