Развертывание ClickOnce выполняет постепенные обновления. При развертывании обновления, если отметка даты / времени и хэш файла совпадают с последней версией, ClickOnce копирует их из кэшированной версии в новую версию, а не копирует их через Интернет.
Если у вас есть несколько проектов в одном решении, ClickOnce будет развертывать каждый из них каждый раз, потому что они перекомпилируются и перефразируются при создании решения. НО, если у вас есть проекты, которые, как вы думаете, сильно не изменятся, вы можете поместить их в отдельное решение, собрать их и включить dll в основное приложение. Тогда он не будет перестраиваться и перефразироваться каждый раз, когда вы публикуете, и больше не будет копироваться через Интернет.
Что касается запуска из Интернета, вы можете указать, что приложение будет запускаться только онлайн, что требует, чтобы пользователь мог подключаться к манифесту deploymnet (файл .application) и иметь возможность проверять наличие обновлений каждый раз, когда он запускает его.
Обратите внимание, что большинство людей устанавливают ClickOnce для проверки обновлений и устанавливают их перед запуском, что гарантирует, что клиент всегда использует самую последнюю версию.
Я не уверен, что это значит: «Мне нужно обновить программу без остановки».
Если вы хотите обновить приложение ClickOnce, не заставляя пользователя закрывать его, вы можете использовать API-интерфейсы программирования, чтобы проверить наличие обновлений и установить их, но вам придется перезапустить приложение, чтобы установить обновления. (Application.Restart ()).