温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

构建Xamarin.Forms NuGet

发布时间:2020-08-05 17:59:53 来源:网络 阅读:837 作者:wangccsy 栏目:移动开发


探索Xamarin.Forms(并在代码中变得更加舒适)的一个很好的方法是克隆存储库并运行它,特别是任何ControlGallery项目。 我们知道您中有许多人已经做到了这一点,所以您可以采取的下一步是为XAMarin.Forms进行自己的定制,以便在组织内构建和分发您自己的NuGet软件包。 在这篇文章中,让我们在本地进行一下,然后讨论如何在Visual Studio Team Services(VSTS)上进行配置。

本地设置

Windows构建所有

构建Xamarin.Forms Nuget本地最容易在Windows机器上完成。 如果您包括即将推迟使用的Windows Phone 8和8.1,或者您可以使用Visual Studio 2017,您将需要使用Visual Studio 2015。构建非常简单:

  1. 选择Debug或者Release

  2. 右键单击解决方案,然后选择构建。

我可以听到你问:“但是Mac的主机呢,我需要一个吗?”因为我第一次问了同样的问题。 因为我们正在生成一个NuGet而不是一个iOS或Mac应用程序,我们不需要Mac构建主机。 我们正在建立针对Xamarin和Windows框架SDK。

解决方案成功完成后,您应该生成用于在IDE中显示文档的xml。 现在,您已准备好将新制作的程序集打包成NuGet程序包。 为了实现这一点,我们有一个方便的create-nuget.bat脚本,您可以从命令行按名称执行。

if "%DEBUG_VERSION%"=="" set DEBUG_VERSION=0
set /a DEBUG_VERSION=%DEBUG_VERSION%+1
pushd docs
..\tools\mdoc\mdoc.exe export-msxdoc -o Xamarin.Forms.Core.xml Xamarin.Forms.Core
..\tools\mdoc\mdoc.exe export-msxdoc -o Xamarin.Forms.Xaml.xml Xamarin.Forms.Xaml
..\tools\mdoc\mdoc.exe export-msxdoc -o Xamarin.Forms.Maps.xml Xamarin.Forms.Maps
popd
pushd .nuspec
..\.nuget\NuGet.exe pack Xamarin.Forms.nuspec -properties configuration=debug;platform=anycpu -Version 9.9.%DEBUG_VERSION%
popd

您可以直接更新,以使用您选择的版本和构建配置。 注意,当前脚本设置为期望调试配置。 另外,请注意文档正在被更新,然后生成NuGet。

完成后,NuGet软件包将在您的根目录中。

在OS X上生成

虽然您可以在Mac上构建Xamarin.Forms,但我不推荐它。 您马上必须修剪所有的Windows目标,这意味着你创建的任何NuGet只能在iOS,Android和Mac上工作。 如果你在Mac上,不能在Windows机器上构建,那么在VSTS上建立就是为您而设的!

在VSTS上云构建

Visual Studio团队服务提供了丰富的任务来创建一个非常灵活的构建解决方案,并为我们的需求:

  • 获取Xamarin.Forms源

  • 恢复NuGet软件包

  • 构建解决方案

  • 生成文档

  • 打包NuGet

  • 发布

听起来很容易,对吧?

构建Xamarin.Forms NuGet

首先,我们需要一个关于VSTS的项目。 从您的VSTS目标网页单击新建项目并填写您的首选项。 一旦创建,请转到该项目的“构建和发布”选项卡。 创建一个新的Build定义并开始添加这些任务!

获取Xamarin.Form源码

VSTS为各种常见场景提供了模板,但我们将从一个空进程开始。 对于“默认代理队列”,选择托管。

为我们提供了一个任务,那就是获取资源。 选择该任务并从您要拉出Xamarin.Forms代码的位置进行配置。

  • 项目

  • Github

  • 远程仓库

  • Subversion

构建Xamarin.Forms NuGet

恢复NuGet包

像往常一样,在我们可以构建任何解决方案,包括Xamarin.Forms之前,你想确保任何NuGet依赖关系已被恢复。 Visual Studio在本地运行构建时默认为此做。

单击添加任务并添加“NuGet”任务。 在任务的版本下拉菜单中更改为0. *。 这提供了更容易地自定义NuGet参数的功能。 对于“解决路径”,输入“Xamarin.Forms.sln”,因为它位于存储库的根目录。

构建Xamarin.Forms NuGet

确保“安装类型”设置为还原。

包括这些参数:

-source "https://www.nuget.org/api/v2;https://www.myget.org/F/nuget;https://www.myget.org/F/xamarinforms-ci/api/v3/index.json;https://www.myget.org/F/yoga/api/v3/index.json;https://www.myget.org/F/xamprojectci/api/v3/index.json;"

构建解决方案

现在我们已经准备好构建解决方案了。 添加另一个任务,此时选择“Visual Studio Build”。 再次指出“Xamarin.Forms.sln”。 根据您要在“平台和配置”字段中构建的内容,添加可以更改的变量。

Platform: $(BuildPlatform)
Configuration: $(BuildConfiguration)

当您稍后启动构建时,这些将是您可以设置的选项。

选中Clean复选框

生成文档

构建IDE所需的所有适当的xml文件以显示文档。 为此,您将需要一个批处理脚本和三个命令行任务。 您已经掌握了查找任务并将其添加到该过程中,所以让我们放弃重复。 以下是这些任务的设置。

Batch Script
Display Name: Update XML Documentation
Path: update-docs-windows.bat

Command Line
Display Name: Generate XML Documentation (Core)
Tool: $(Build.SourcesDirectory)\tools\mdoc\mdoc.exe
Arguments: export-msxdoc -o Xamarin.Forms.Core.xml Xamarin.Forms.Core
Working Folder: docs

Command Line
Display Name: Generate XML Documentation (XAML)
Tool: $(Build.SourcesDirectory)\tools\mdoc\mdoc.exe
Arguments: export-msxdoc -o Xamarin.Forms.Xaml.xml Xamarin.Forms.Xaml
Working Folder: docs

Command Line
Display Name: Generate XML Documentation (XAML)
Tool: $(Build.SourcesDirectory)\tools\mdoc\mdoc.exe
Arguments: export-msxdoc -o Xamarin.Forms.Maps.xml Xamarin.Forms.Maps
Working Folder: docs

打包NuGet

最后,你一直在等待如此耐心的步骤! 添加“NuGet Packager”任务并对其进行配置。

Version 0.*
Patch to the nuspec: .nuspec/Xamarin.Forms.nuspec
Configuration to Package: $(BuildConfiguration)
Addition build properties: IdAppend=.Custom

发布NuGet

也许你想发布给你控制的MyGet Feed。 你可以在这里做。 为了简单起见,我们将该包放在VSTS项目的文件夹中。 添加发布构建工件的任务。

获得构建

保存并排队您的构建。 从“构建”选项卡,您可以访问构建历史记录,查看您的工作状态,任何错误等。

构建Xamarin.Forms NuGet

准备。 设置。 构建。

现在,您将全部构建Xamarin.Forms并在您自己的组织内分发! 如果您还没有VSTS帐户,请注册免费开始使用。 当然,如果您正在修复或定制每个人都可以从中受益,请在GitHub上打开一个请求并分享爱情。



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI