Я использую Visual Studio .NET для создания компонента, который будет использоваться двумя клиентскими приложениями. В конце концов, я планирую развернуть новую версию этого компонента. Однако не все новые версии будут совместимы с обоими клиентскими приложениями. Когда я развертываю компонент и клиентские приложения, я должен убедиться, что могу обновить компонент для одного клиентского приложения. Я также должен свести к минимуму необходимость изменений конфигурации при развертывании новой версии компонента. Каковы возможные пути достижения этой цели?Развертывание .NET-компонентов (обновление компонента только для одного клиентского приложения)
ответ
Если вы используете глобальный кэш сборок, убедитесь, что вы указываете другую AssemblyVersion для каждой версии сборки, после чего вы можете установить их рядом друг с другом. Приложения, созданные против версии 1, будут продолжать работать против версии 1, а приложения, созданные против версии 2, будут продолжать работать против версии 2. Вы можете перенаправить отдельное приложение с помощью элемента конфигурации <bindingRedirect>
. (Политика издателя повлияет на все приложения, поэтому вам нужно будет внести изменения в app.config.)
Если вы не используете GAC и вместо этого развертываете DLL в тот же каталог, что и EXE, t нужно беспокоиться о бок о бок версии. Если вы не можете перестроить EXE в отношении новой DLL, вам необходимо указать перенаправление, как описано выше.
Если все это звучит запутанно, вы правы. Если возможно, я бы рассмотрел использование ClickOnce для развертывания ваших приложений, что делает процесс развертывания обновлений тривиальным. Развернутые приложения ClickOnce не установлены в GAC и автоматически проверяют наличие обновлений на основе политики, которую вы определяете.
Лучший способ - это просто настроить символы сборки и использовать #ifdef App1 и #ifdef App2 для включения или отключения фрагментов кода ... Значит, вам не нужно управлять несколькими проектами или ветвями или чем-то похожим. Предполагая, что кодовые базы останутся относительно похожими, его наименьшая проблема для достижения того, чего вы хотите
Ваши варианты ограничены.
Если вы просто связываетесь с компонентом, то оба приложения будут использовать последнюю версию, когда она будет выпущена.
Если вы ссылаетесь на определенную версию компонента, вы решите проблему с нарушением изменений, но это будет означать, что вам необходимо обновить конфигурацию приложений для связи с более новой версией, если это применимо.
Я думаю, вам нужно решить, почему вы будете вводить изменения в свой компонент.
- 1. Обновление клиентского приложения
- 2. Обновление клиентского приложения
- 3. Обновление только одного файла через кэш приложения
- 4. Обновление клиентского компьютера с помощью веб-приложения
- 5. Логика клиентского компонента VAADIN
- 6. Развертывание серверного клиентского многопользовательского режима для heroku
- 7. Имя модуля GWT для теста клиентского компонента
- 8. Развертывание компонента SSIS Развертывание DLL
- 9. Развертывание клиентского приложения Windows Form, но сборки отсутствуют
- 10. Как включить сервер gRPC для поддержки только одного клиентского подключения
- 11. Sinatra cookie для клиентского приложения
- 12. Angularjs для клиентского серверного приложения
- 13. Обновление одного компонента на странице JSP
- 14. Идентификатор приложения для каждого вида клиентского приложения
- 15. Создайте пакет только для одного компонента с CMake и CPack
- 16. Дизайн фонового клиентского приложения
- 17. Обновление состояния приложения при изменении дочернего компонента
- 18. Реагировать: оставить содержимое только одного компонента
- 19. Обновление только одного экземпляра AppWidget
- 20. Графики PCA только одного основного компонента
- 21. Дизайн клиентского приложения iOS
- 22. Защита клиентского Java-приложения
- 23. Развертывание для конкретного приложения
- 24. Развертывание приложения для Android
- 25. Развертывание веб-приложения Yesod
- 26. Распределите обновление клиентского приложения в хранилище приложений без сертификата
- 27. Как исправить порт для клиентского приложения
- 28. Xcode: обновить обновление приложения только для iPhone?
- 29. Загрузить обновление приложения только для одной страны
- 30. Окружающая среда Dev для смарт-клиентского приложения