如何设置Azure Dev Ops来构建Dev Express XAF-XPO项目?

时间:2018-10-12 05:21:43

标签: azure-devops nuget-package xaf

我想在Azure Devops中为XAP Mobile应用设置持续集成和部署。

为了获取CI / CD,我需要设置Azure管道以安装正确的软件包。

Hosting your own NuGet feeds上的文档中有一些信息 和Get started with NuGet packages in Azure DevOps

Dev Express解释说,他们目前不为XAF提供Nuget提要,但我可以自己制作Delegate's DCNugetPackageBuilder

使用DXNugetPackageBuilder制作Nuget软件包

按照说明,我下载了.pdb文件,并将它们提取到c:\ tmp \ symbols

我还下载了DXNugetPackageBuilder并根据说明编辑了buildPackages.bat。

接下来,我在提升的Powershell中运行build.ps1

这在C:\ tmp \ Nuget中创建了.nupkg文件

默认情况下,此文件使用位于

的文件
 C:\Program Files (x86)\DevExpress 18.1\Components\Bin\Framework

和位于

的.pdb文件
c:\tmp\symbols

使用Nuget.Exe和凭据提供程序将程序包推送到提要

“连接到提要”屏幕上提到我需要下载Nuget.exe和凭据提供程序 download credential provider

以下是the Credentials Provider

上的文档

我解压缩了VSTS CredentialProviders Nuget。其中包括Exe。

下一步是按照“连接到提要”屏幕的“添加此提要”部分给出的说明进行操作。

例如

nuget.exe push -Source "SBDDevExpress" -ApiKey VSTS c:\tmp\Nuget\DevExpress.Data.18.1.6.0.nupkg

我遇到了访问被拒绝的问题that got solved here

然后我就能推送我想要的所有包裹。

设置Nuget软件包源

在打开我的解决方案的VS2017中,我使用了工具-> Nuget软件包管理器->软件包管理器设置

我添加了程序包设置,并将Azure端点设置为程序包源。

错误构建

当我运行构建管道时,出现类似错误

The type or namespace DevExpress could not be found are you missing a directive or assembly reference?

looking at the pipeline error

通过研究Updater.cs和Module.cs 看来我在Nuget资讯提供中缺少以下名称空间。

DevExpress.ExpressApp.DC;
DevExpress.ExpressApp.Updating;
DevExpress.Persistent.BaseImpl.PermissionPolicy;

[更新]

DevExpress建议我将bin文件夹中生成的dll与我的软件包提要进行比较。

我发现了几个丢失的文件并推送了它们的包。

我现在有

XafMobile.Module\Properties\licenses.licx(1.0): Error LC0003: Unable to resolve type 'DevExpress.ExpressApp.ModuleBase"

showing in the build output

从源代码中可以看到ModuleBase是DevExpress.ExpressApp中的公共类

我想知道这是否与反射有关。

在Dev Express support

中有提及

[更新]

我尝试删除许可证文件并同步项目。 现在错误显示为缺少程序集引用

missing assembly references

此外,当我重建解决方案时,属性文件夹中缺少许可证文件

我想知道this helps explain it

[更新]

Manuel Grunder [DevExpress MVP]和DXNugetPackageBuilder作者解释说

” 使用nuget.packages时,您也需要通过nuget引用它们 as he explains here

1 个答案:

答案 0 :(得分:0)

explained here

“在使用nuget.packages时,您也需要通过nuget引用它们。这就是为什么它首先无法使用的原因。”