2010-03-31 4 views
1

Я использую Visual Studio .NET для создания компонента, который будет использоваться двумя клиентскими приложениями. В конце концов, я планирую развернуть новую версию этого компонента. Однако не все новые версии будут совместимы с обоими клиентскими приложениями. Когда я развертываю компонент и клиентские приложения, я должен убедиться, что могу обновить компонент для одного клиентского приложения. Я также должен свести к минимуму необходимость изменений конфигурации при развертывании новой версии компонента. Каковы возможные пути достижения этой цели?Развертывание .NET-компонентов (обновление компонента только для одного клиентского приложения)

ответ

0

Если вы используете глобальный кэш сборок, убедитесь, что вы указываете другую AssemblyVersion для каждой версии сборки, после чего вы можете установить их рядом друг с другом. Приложения, созданные против версии 1, будут продолжать работать против версии 1, а приложения, созданные против версии 2, будут продолжать работать против версии 2. Вы можете перенаправить отдельное приложение с помощью элемента конфигурации <bindingRedirect>. (Политика издателя повлияет на все приложения, поэтому вам нужно будет внести изменения в app.config.)

Если вы не используете GAC и вместо этого развертываете DLL в тот же каталог, что и EXE, t нужно беспокоиться о бок о бок версии. Если вы не можете перестроить EXE в отношении новой DLL, вам необходимо указать перенаправление, как описано выше.

Если все это звучит запутанно, вы правы. Если возможно, я бы рассмотрел использование ClickOnce для развертывания ваших приложений, что делает процесс развертывания обновлений тривиальным. Развернутые приложения ClickOnce не установлены в GAC и автоматически проверяют наличие обновлений на основе политики, которую вы определяете.

0

Лучший способ - это просто настроить символы сборки и использовать #ifdef App1 и #ifdef App2 для включения или отключения фрагментов кода ... Значит, вам не нужно управлять несколькими проектами или ветвями или чем-то похожим. Предполагая, что кодовые базы останутся относительно похожими, его наименьшая проблема для достижения того, чего вы хотите

1

Ваши варианты ограничены.

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

Если вы ссылаетесь на определенную версию компонента, вы решите проблему с нарушением изменений, но это будет означать, что вам необходимо обновить конфигурацию приложений для связи с более новой версией, если это применимо.

Я думаю, вам нужно решить, почему вы будете вводить изменения в свой компонент.

Смежные вопросы