Частичные обновления приложений в ClickOnce с использованием сборки Visual Studio - PullRequest
6 голосов
/ 17 февраля 2010

Я использую VS2008 для публикации файлов своего приложения с помощью ClickOnce. Я где-то читал, что ClickOnce разумно делает только частичные обновления; Это означает, что он загружает файлы только из общей сетевой папки, если файл был изменен в последующих обновлениях. Тем не менее, это не работает для меня. Поэтому я провел небольшое исследование и наткнулся на эту статью MSDN - http://msdn.microsoft.com/en-us/library/ms404267.aspx.. В ней говорится, что если мы собираемся с использованием VS, он не выполняет частичные обновления. Может кто-нибудь сказать мне, почему это так? Если это так, есть ли способ, по крайней мере, позволить ссылочным библиотекам dll быть загруженными только в первый раз. Я использую Microsoft Practices Enterprise Library и некоторые сторонние элементы управления (с огромными файлами тем).

Спасибо, Uniball

1 Ответ

8 голосов
/ 17 февраля 2010

Частичные обновления прекрасно работают в ClickOnce даже при сборке в VS. Однако, если у вас есть решение, состоящее из нескольких проектов (например, нескольких проектов библиотеки классов и исполняемого файла), то каждый раз, когда вы перестраиваете все проекты, временная метка в файлах сборки будет меняться, даже если в коде этого не было. Поскольку ClickOnce действительно только смотрит на временные метки, чтобы решить, нужно ли обновлять файл, он будет извлекать (неизмененные) сборки как новые файлы, когда пользователь обновляется.

Обходной путь - извлечь любые зависимые проекты из файла решения вашего исполняемого файла и построить их отдельно. Это означает, что любые сборки, код которых не меняется очень часто, будут переданы клиенту только один раз. Если вам нужно изменить сборку, вы просто открываете ее решение и вносите изменения, затем снова открываете решение вашего исполняемого файла и перестраиваете его. При следующем обновлении ClickOnce будут загружены как исполняемый файл, так и измененная сборка.

Надеюсь, это достаточно ясно!

...