Подтвердить что ты не робот

NuGet как механизм обновления приложения

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

2) Хостинг вашего собственного канала легко, проверьте www.myget.org или используйте Галерея NuGet

Ответ 2

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

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

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

Ответ 3

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

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

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