NuGet как механизм обновления приложений - PullRequest
18 голосов
/ 26 января 2012

Мы разрабатываем приложение .NET 3.5 (Windows Forms), которое состоит из 3 основных частей.

В рамках процесса развертывания мы хотели бы иметь возможность постоянно обновлять компоненты после установки.

Я думал о настройке сервера NuGet и упаковке обновлений компонентов в пакеты NuGet.

Кто-нибудь делал такое раньше? Как вы думаете, NuGet подходит для этой работы?

Наши требования:

  • Получение упакованных DLL-файлов (но могут быть сценарии дополнительных файлов в пакете
  • Обнаружение зависимости от других компонентов (или версий компонентов)
  • Автоопределение новых версий компонентов

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

Вопрос в том, насколько хорошо я могу интегрировать NuGet с нашим приложением? есть ли какой-нибудь клиентский код NuGet для использования пакетов? Мне интересно, может ли это сработать.

Ответы [ 3 ]

8 голосов
/ 26 января 2012

1 и 3) Возможно развертывание и получение данных из NuGet с использованием NuGet.Core. Проверьте NuGet push ... для Windows Azure и исходный код для команды обновления NuGet.exe -Self.

Мы также показываем этот сценарий в нашей новой книге NuGet - Pro NuGet .

2) Размещение собственного канала очень просто, зайдите на сайт www.myget.org или воспользуйтесь NuGet галереей

4 голосов
/ 20 декабря 2012

Немного опоздал на вечеринку, но я разработал фреймворк с открытым исходным кодом, который точно соответствует требуемым требованиям.

Он называется Sidewinder (http://sidewinder.codeplex.com) - лучший способ использовать его черезэто пакеты NuGet (http://nuget.org/packages/sidewinder).

. По сути, вы добавляете небольшой кусочек кода в начале вашего приложения, и компонент sidewinder проверит канал (официальный или пользовательский) на наличие обновлений нужных вам пакетов, потянитеих распаковывают и распаковывают во временную папку. Затем он создает резервную копию вашего приложения на zip-архиве, запускает sidewinder.exe (который завершит установку) и возвращает управление вашему приложению, указывая, что оно должно прерваться в ожидании обновления. Как только ваше приложение закрывается., sidewinder.exe копирует обновленное содержимое из временной папки в папку вашего приложения, и если вы включите readme.txt в пакет nuget, это будет даже шеллекс, что для вас.

2 голосов
/ 26 января 2012

Я думаю, что это возможно, я сам делаю нечто подобное в проекте, который я разработал.Я не думаю, что это «изгибающий нюгет», поскольку вы используете приватный канал и не пытаетесь отправить эти пакеты в общедоступный канал.Nuget может обрабатывать ваши зависимости в отношении сборки A, для работы которой требуется сборка B, но что касается динамической загрузки / выгрузки, вам придется искать что-то похожее на Managed Extensibility Framework для автоматической загрузки новых модулей.

Существует клиентский код для Nuget, называемый Nuget.Core, и он используется в окне Nuget PowerShell в Visual Studio для загрузки пакетов.Его можно использовать для выполнения описанных вами функций, загрузки новых пакетов и размещения их в местах, ожидаемых вашим приложением.

Если вы ищете какие-то примеры, есть поиск в Google, который можно найти, но одинна ум сразу приходит OctopusDeploy , представляющий собой среду развертывания приложений, построенную на основе nuget.

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