Как настроить Azure Dev Ops для создания проекта Dev Express XAF-XPO?
Я хочу настроить непрерывную интеграцию и развертывание приложения XAP Mobile в Azure Devops.
Чтобы получить CI/CD, мне нужно настроить конвейер Azure для установки правильных пакетов.
В документации содержится информация о размещении собственных каналов NuGet и о начале работы с пакетами NuGet в DevOps Azure.
Dev Express объяснил, что в настоящее время они не предоставляют канал Nuget для XAF, но я могу создать собственный делегат DCNugetPackageBuilder.
Использование DXNugetPackageBuilder для создания пакетов Nuget
По инструкции я скачал.pdb файлы извлек их в c:\tmp\ символы
Я также скачал DXNugetPackageBuilder и отредактировал buildPackages.bat в соответствии с инструкциями.
Затем я запустил build.ps1 в повышенных PowerShell
Это создало файлы.nupkg в C:\tmp\Nuget
По умолчанию используются файлы, расположенные в
C:\Program Files (x86)\DevExpress 18.1\Components\Bin\Framework
и файлы.pdb, расположенные в
c:\tmp\symbols
Использование Nuget.Exe и провайдера учетных данных для отправки пакетов в канал
На экране Connect To Feed упоминается, что мне нужно скачать Nuget.exe и провайдер учетных данных.
Вот документы на провайдера учетных данных
Я распаковал VSTS CredentialProviders Nuget.Exe включен.
Следующим шагом является следование инструкциям раздела "Добавить этот канал" на экране "Подключение к каналу".
Например
nuget.exe push -Source "SBDDevExpress" -ApiKey VSTS c:\tmp\Nuget\DevExpress.Data.18.1.6.0.nupkg
Я столкнулся с проблемой отказа в доступе, которая была решена здесь
тогда я смог выдвинуть все пакеты, которые хотел.
Установите источник пакета Nuget
В VS2017 с открытым решением я использовал Инструменты -> Диспетчер пакетов Nuget -> Настройки диспетчера пакетов
Я добавил параметры пакета с конечной точкой Azure, настроенной в качестве источника пакета.
Ошибки построения
Когда я запускаю конвейер сборки, я получаю такие ошибки, как
The type or namespace DevExpress could not be found are you missing a directive or assembly reference?
Из изучения Updater.cs и Module.cs Кажется, мне не хватает следующих пространств имен из ленты Nuget.
DevExpress.ExpressApp.DC;
DevExpress.ExpressApp.Updating;
DevExpress.Persistent.BaseImpl.PermissionPolicy;
[Обновить]
DevExpress предложил мне сравнить dll, сгенерированные в папке bin, с моим фидом пакетов.
Я нашел несколько отсутствующих файлов и отправил их пакеты.
У меня сейчас
XafMobile.Module\Properties\licenses.licx(1.0): Error LC0003: Unable to resolve type 'DevExpress.ExpressApp.ModuleBase"
Из исходного кода видно, что ModuleBase является общедоступным классом в DevExpress.ExpressApp.
Мне интересно, если это как-то связано с отражением.
Есть некоторые упоминания об этом при поддержке Dev Express
[Обновить]
Я попытался удалить файлы лицензий и синхронизировать проект. Теперь ошибки отображаются как отсутствующие ссылки на сборки
Также, когда я перестраиваю свое решение, файлы лицензий отсутствуют в папках свойств
Интересно, поможет ли это объяснить
[Обновить]
Мануэль Грюндер [DevExpress MVP] и автор DXNugetPackageBuilder объяснили, что
"При работе с nuget.packages вам нужно ссылаться на них через nuget, а он объясняет здесь "
1 ответ
"При работе с nuget.packages вам также нужно ссылаться на них через nuget. Именно поэтому он не сработал".