Как настроить 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. Именно поэтому он не сработал".

Другие вопросы по тегам