Xamarin.Forms新手指南

Xamarin.Forms已经开源了一年多了。 那时候,我们已经接受了700多次拉取请求并收到了更多的请求。 有没有这些是你的? 如果没有,这是你的参与邀请! 在本文中,我将概述我们正在寻找什么样的贡献,并提供一个指南来提交您的第一个错误修复。

创新互联服务项目包括花垣网站建设、花垣网站制作、花垣网页制作以及花垣网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,花垣网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到花垣省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

我们接受什么贡献

简而言之,我们将招募任何使Xamarin.Forms产品在稳定性,质量和能力方面更好的产品。 这可能采取以下形式:

  1. Bug修复

  2. 功能实现

  3. 测试

  4. 自述和维基文章或更新

在GitHub项目开始打开“请求”之前,有一些先决条件。

签署.NET Foundation Release

当您提交提请请求时,.NET Foundation bot将检查以确保您已经签署了Contribution许可协议。 如果没有,系统会提示您这样做。 在完成之前,我们不能接受任何捐款。

查看编码样式要求

除了一些例外,我们坚持使用.NET Foundation风格指南:

  • 不要使用私有,因为这是默认保护级别。

  • 使用硬标签而不是空格

  • 将行限制为最多120个字符

Xamarin.Forms新手指南

有关在Visual Studio安装中实现其中的一些的指导,请查阅我们的自述文件。

让我们关注错误修复

你发现了一个错误,并有一个修复你想贡献?真棒! 在您走得太远之前,请快速搜索Bugzilla,查看是否有任何相同问题的报告。 在搜索Xamarin.Forms时,选择“高级搜索”选项,然后:

  • Classification:Xamarin

  • Product:Xamarin.Forms

  • Component:无或全部搜索广泛

  • Status:所有的

如果存在匹配问题,并且标记为“正在进行”,则有人已经在处理此问题。 如果在该问题上引用了PR,那么可能会在GitHub上等待合并。 当问题被解决和修复时,然后已经将Pull请求合并以解决问题。 目前,要查看是否已经发布,您需要在哪个版本中搜索我们的发行说明。 我们有计划在未来几个星期内改进。

如果在任何其他不完整的状态有错误,或没有错误报告,那么你运气好,准备继续!

Xamarin.Forms解决方案

当您开始探索Xamarin.Forms解决方案时,可能看起来很难过。 我会为你揭开神秘面纱,并告诉你在哪里注意力。

Xamarin.Forms新手指南

Control Gallery/
这些项目包括一个画廊应用程序,包括所有可用的Xamarin.Forms控件,更重要的是使用UITEST内联的主机错误复制。 在修复错误时,或者只是为了调查控件是如何工作的,这个裸骨头但是功能性的应用程序是你想要看的地方。

Pages Gallery/
顾名思义,这是另一个库应用程序,但这次是DataPages实现。

Platforms/
这些项目包含平台特定的服务实现,最重要的是UI控件。 当Xamarin.Forms在iOS上呈现一个Label时,它会运行Xamarin.Forms.Platform.iOS/Renderers/LabelRenderer.cs. 在Android上,你会得到Xamarin.Forms.Platform.Android/Renderers/LabelRenderer.cs, 或者如果您使用的是FastRenderers Xamarin.Forms.Platform.Android/FastRenderers/LabelRenderer.cs. 当添加控件或修复控件相关的错误时,这将是您实现这些更改的位置。

Xamarin.Forms/
在查找抽象控件,布局,绑定,触发器,应用链接和其他非平台特定代码的核心实现时,搜索这些项目。

Xamarin.Forms.Maps/ and Xamarin.Forms.Xaml/
这些文件夹是不言自明的。 你可能不会花太多时间在这些项目中,除非你真的明白这些领域。

Fixing a Bug

  • Clone the Xamarin.Forms code from GitHub master branch or pull to make sure you have the latest.

  • Create a new branch to host your changes

  • Open the Xamarin.Forms solution and navigate to the Control Gallery > Xamarin.Forms.Controls.Issues > Xamarin.Forms.Controls.Issues.Shared

  • Use the _Template.cs to start a new case following the established naming convention of “Bugzilla######.cs” where ###### is the issue id in Bugzilla.

using Xamarin.Forms.CustomAttributes;
using Xamarin.Forms.Internals;

#if UITEST
using Xamarin.UITest;
using NUnit.Framework;
#endif

namespace Xamarin.Forms.Controls.Issues
{
	[Preserve(AllMembers = true)]
	[Issue(IssueTracker.Bugzilla, 1, "Issue Description", PlatformAffected.Default)]
	public class Bugzilla1 : TestContentPage // or TestMasterDetailPage, etc ...
	{
		protected override void Init()
		{
			// Initialize ui here instead of ctor
			Content = new Label
			{
				AutomationId = "IssuePageLabel",
				Text = "See if I'm here"
			};
		}

#if UITEST
		[Test]
		public void Issue1Test ()
		{
			RunningApp.Screenshot ("I am at Issue 1");
			RunningApp.WaitForElement (q => q.Marked ("IssuePageLabel"));
			RunningApp.Screenshot ("I see the Label");
		}
#endif
	}
}

在这里实现您的繁殖情况。 如果是一个更复杂的案例,请参考本项目中的其他问题,找到类似的内容,并遵循该模式。 最后你应该有一个演示,演示你正在努力解决的问题。

  • 选择控制库目标项目以在模拟器或设备上运行。

Xamarin.Forms新手指南

你应该看到你的重生发生。 如果没有,那么就会出现这个问题已经解决了。

  • 实施你的修复并重新测试。

  • 在再现文件中实现UITest。 如果您不是UITest专业人员,请再次参考来源中的其他修补程序。 一旦您提交拉动请求,测试将自动运行。

您现在可以创建一个拉请求。 在您的IDE或Git工具中,在GitHub上为Xamarin.Forms远程创建一个Pull请求。 这个过程应该转到GitHub Pull Request页面,并填入Xamarin.Forms Pull Request模板。 我们要求您填写您可以做的一切,并省略任何不适用的内容。

Xamarin.Forms新手指南

Description
目前的行为是什么,预期的行为是什么?

Bugs
列出这适用于的任何和所有Bugzilla报告

API Changes
如果任何类的表面区域在进行此修复时更改,请注意此处的更改。 这些可能表示其他用户及其遗留应用程序的破坏或行为变化。

Checklist
指示您是否已经包括测试。 如果不需要任何测试或使用UITest来测试问题太难,请注意。

就是这样 提交拉请求,我们将审查。 如果有问题或疑虑,团队将提交意见并提出代码请求。 这个审查过程可能会感到临床,所以不要亲自去。 对自己说,开源项目的拉扯请求流程是一个很好的学习经历,在几乎每一种情况下,我的贡献最终都被接受。

如果您将URL复制到Pull请求并在引用的Bugzilla问题上注意,这对我们和其他用户也是非常有帮助的。

Adding Features
在开始研究功能之前,请查看公共Xamarin.Forms路线图,然后搜索Evolution论坛,我们将讨论可能的新功能和其他更改的规范。 如果您没有看到已经覆盖的功能,请在Evolution论坛上打开一个提案,并提供实施。 Xamarin.Forms工程小组将审核该提案并提供反馈。

如果您在一个平台上实现舒适,但不足以实现其余平台,该怎么办? 继续打开提案,邀请他人参与。

Tests and Wiki
如上所述,我们也欢迎在这些领域的贡献。 我们有几个UITEST项目以及单元测试。 我们有相当好的覆盖面,但总是会更好。 测试正确的事情很重要,所以如果你有任何问题请问。

我们的文档小组继续对我们的开发人员指南和API文档做出惊人的工作。 如果您发现任何不准确或有建议,请使用侧栏中的“我有问题”按钮,并发送给我们详细信息。

Xamarin.Forms新手指南

如果您的维基贡献不符合这些文档类别,请告诉我们,我们将考虑构建维基。

快乐贡献!

我希望你会考虑为Xamarin.Forms做出贡献。 没有什么可以让您的拉动请求合并,并且知道您刚刚帮助了一个巨大的惊人的开发人员社区。

有关详细信息并开始使用:

  • open.xamarin.com for more guidance on contributing to Xamarin open source

  • github.com/xamarin/Xamarin.Forms

  • Evolution forum proposals

  • Bugzilla


当前名称:Xamarin.Forms新手指南
文章网址:http://hbruida.cn/article/igjgcc.html