Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
.NET 4.x

Посредник для вспомогательной библиотеки

27.05.2018, 12:31. Показов 915. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
У меня есть много приложений под AutoCAD и Revit. В этих приложениях используется библиотека для оформления окон Mahapps.Metro.dll. Также есть моя собственная вспомогательная библиотека, которая подключена ко всем проектам. В моей библиотеке создан класс BaseMteroWindow, унаследованный от MetroWindow из Mahapps.Metro.dll.
Проблема заключается в следующем:
1) Ко всем проектам обязательно нужно подключать библиотеку Mahapps.Metro.dll
2) Если я хочу обновить библиотеку Mahapps.Metro.dll, то мне нужно пересобрать все мои приложения с новой версией. Это очень накладно.
Причем в библиотеке убрано StrongNamed, но видимо xaml плевал на это =))

Вопрос - может можно как-то эту библиотеку от всех других "отвязать" сделав некоего посредника? Чтобы для обновления библиотеки достаточно было пересобрать только библиотеку-посредника
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2018, 12:31
Ответы с готовыми решениями:

Модуль-посредник для wtsapi32.dll
Здравствуйте. Вот пытаюсь написать модель-посредник для wtsapi32.dll. Судь заключается в том, что этот модуль заменяет оригинальный и...

Помехи для реализации вспомогательной функции
private static void switchFunc(int n, String mas){ Scanner in = new Scanner(System.in); int m = in.nextInt(); ...

Установка вспомогательной карты от nvidia для поддержки physx на картах amd
Добавлено через 1 минуту PS. Сейчас уже не учусь так что нет возможности спросить у препода

10
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,437
27.05.2018, 14:07
Modis, не совсем я понял вопроса, если честно. Чтобы вы не сделали (с посредник или без него), но обновлять всё придётся. Т.е. если вы введёте посредника, то его тоже придётся обновлять, и как следствие, все использующие его приложения тоже.

Если API не меняется и нет строгого имени, то можно просто подкладывать новую версию сборки всем её использующим. Без перекомпиляции.

Так же, может очень сильно помочь заворачивание вашей сборки в NuGet-пакет и размещение его в локальном репозитории. Там и версии можно вести и обновляться более-менее централизованно.
0
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
27.05.2018, 14:12  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Если API не меняется и нет строгого имени, то можно просто подкладывать новую версию сборки всем её использующим. Без перекомпиляции.
Вот именно в этой части проблема. При прикладывании новой версии программы не захотели работать, хотя должны были. Видимо, такая беда сопровождает именно xaml (в особенности ресурсы). Вот ломаю голову - как быть?
Просто перекомпилировать одну библиотеку (та, что якобы посредником является) и донести до пользователя - это не проблема. Но все основные программы пересобрать и донести до пользователя - труд примерно на неделю времени (учитывая еще и сопутствующую работу на сайте)
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,437
27.05.2018, 14:19
Modis, так а где гарантии, что сборка-посредник корректно воспримется?)

Если вам не проблема пересобрать сборку и всем приложениям подсунуть, то какая проблема пересобрать все приложения? Если что, то приложения можно завернуть в Click Once или Squirrel использовать. Тогда ПО само за обновлениями будет ходить к вам на сайт.
0
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
27.05.2018, 14:25  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Modis, так а где гарантии, что сборка-посредник корректно воспримется?)
Поэтому я и пошёл на форум спрашивать ибо гарантий никаких. Но вдруг кто сталкивался с подобным или просто что-то такое знает
Цитата Сообщение от Usaga Посмотреть сообщение
Если вам не проблема пересобрать сборку и всем приложениям подсунуть, то какая проблема пересобрать все приложения? Если что, то приложения можно завернуть в Click Once или Squirrel использовать. Тогда ПО само за обновлениями будет ходить к вам на сайт
Проблемы немного в другом - у меня не так все работает) Все эти Click Once не подойдут, ибо как я уже писал - у меня плагины для автокада и ревита, а это не десктопные приложения, а библиотеки. Плюс для каждого плагина своя страница, где нужно поменять версию. Плюс История изменений. И все это на двух языках.
Так что просто поверьте мне на слово - для меня такое обновление делать почти неделю (по вечерам если) =)
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,437
27.05.2018, 14:37
Modis, никто вам не запрещает завести инсталлятор для плагинов, который сам всё скопирует и настроит.

Возиться с подкладыванием сборок - ненадёжное и муторное занятие) Был раз, когда в релиз ушло приложение с багом, тогда отделались пересборкой и подкладыванием отдельной библиотеки (клиент не хотел ждать обновления очередного). Такое работает (чаще всего), но это разовые процедуры, которых надо избегать.

Если у вас обновления планируются частые, то вам одна дорога - инсталлятор. Пускай он и следит за обновлениями.
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
27.05.2018, 14:42
Modis, почитайте про mef.
Там нет привязки к библиотекам вообще. Есть привязка к контракту(интерфейсу).
В библиотеке реализуется реализация интерфейса. в другом динамическая загрузка и использование библиотеки.
0
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
27.05.2018, 19:02  [ТС]
Andreyip, посмотрел, почитал. Опять таки - это не решает именно те проблемы, которые создает WPF.
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
27.05.2018, 20:10
Modis, причем тут вообще wpf он вообще не будет знать какая библиотека используется какой версии и где. Если методы и свойства контракта не обновились все будет работать как работало.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
02.06.2018, 14:37
Цитата Сообщение от Modis Посмотреть сообщение
Если я хочу обновить библиотеку Mahapps.Metro.dll, то мне нужно пересобрать все мои приложения с новой версией. Это очень накладно.
Причем в библиотеке убрано StrongNamed, но видимо xaml плевал на это =))
Цитата Сообщение от Modis Посмотреть сообщение
При прикладывании новой версии программы не захотели работать, хотя должны были.
Если StrongName был убран в новой версии, которую вы хотите подсунуть, то неудивительно что не работает. В этом и смысл подписанных сборок, чтобы в приложении их нельзя было заменить неподписанными, или подписанными другим ключом.
0
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
02.06.2018, 19:40  [ТС]
Цитата Сообщение от nicolas2008 Посмотреть сообщение
Если StrongName был убран в новой версии, которую вы хотите подсунуть, то неудивительно что не работает. В этом и смысл подписанных сборок, чтобы в приложении их нельзя было заменить неподписанными, или подписанными другим ключом
Проблема в том, что я заменял версию у которой УЖЕ был убран StrongName на чуть более новую версию.
Проблема где-то кроется в "двойном" использовании - т.е. библиотеки "потребляют" мою dll, которая "потребляет" эту самую искомую dll. Если бы этой прослойки не было - то скорее всего и проблем бы не было. И я больше чем уверен, что все проблемы связаны именно с xaml. Это вообще больная часть всего net framework'а
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.06.2018, 19:40
Помогаю со студенческими работами здесь

про библиотеки в VS C++ (какие библиотеки нужны для функций 'cout' и 'cin')
какие библиотеки нужны для функций 'cout' и 'cin' ???

Посредник и overload
Добрый день. Пытаюсь реализовать паттерны медиатор, команда и актер и столкнулся с такой странностью. У актера есть два перегруженных...

Нужен посредник сделки
спасибо, пока что еще ждем возможного ответа модератора

Посредник между клиентом и сервером
Передо мной встала задача реализации программы посредника между клиентом и сервером. Суть в том чтобы подменить хосты клиента и заставить...

Word, Access и, видимо, посредник-VB...
А фича такая. Текст из ворда нужно перенести в базу на аксесе. Путь через буфер обмена не пойдеть (если интересно, объясню почему). Есть...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru