Развертывание компонентов .NET (обновить компонент только для одного клиентского приложения) - PullRequest
1 голос
/ 31 марта 2010

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

Ответы [ 3 ]

1 голос
/ 31 марта 2010

Ваши возможности ограничены.

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

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

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

0 голосов
/ 31 марта 2010

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

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

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

0 голосов
/ 31 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...