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