Xamarin.Forms已经开源了一年多了。 那时候,我们已经接受了700多次拉取请求并收到了更多的请求。 有没有这些是你的? 如果没有,这是你的参与邀请! 在本文中,我将概述我们正在寻找什么样的贡献,并提供一个指南来提交您的第一个错误修复。
简而言之,我们将招募任何使Xamarin.Forms产品在稳定性,质量和能力方面更好的产品。 这可能采取以下形式:
Bug修复
功能实现
测试
自述和维基文章或更新
在GitHub项目开始打开“请求”之前,有一些先决条件。
当您提交提请请求时,.NET Foundation bot将检查以确保您已经签署了Contribution许可协议。 如果没有,系统会提示您这样做。 在完成之前,我们不能接受任何捐款。
除了一些例外,我们坚持使用.NET Foundation风格指南:
不要使用私有,因为这是默认保护级别。
使用硬标签而不是空格
将行限制为最多120个字符
有关在Visual Studio安装中实现其中的一些的指导,请查阅我们的自述文件。
你发现了一个错误,并有一个修复你想贡献?真棒! 在您走得太远之前,请快速搜索Bugzilla,查看是否有任何相同问题的报告。 在搜索Xamarin.Forms时,选择“高级搜索”选项,然后:
Classification: Xamarin
Product: Xamarin.Forms
Component: 无或全部搜索广泛
Status: 所有的
如果存在匹配问题,并且标记为“正在进行”,则有人已经在处理此问题。 如果在该问题上引用了PR,那么可能会在GitHub上等待合并。 当问题被解决和修复时,然后已经将Pull请求合并以解决问题。 目前,要查看是否已经发布,您需要在哪个版本中搜索我们的发行说明。 我们有计划在未来几个星期内改进。
如果在任何其他不完整的状态有错误,或没有错误报告,那么你运气好,准备继续!
当您开始探索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/
这些文件夹是不言自明的。 你可能不会花太多时间在这些项目中,除非你真的明白这些领域。
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 } }
在这里实现您的繁殖情况。 如果是一个更复杂的案例,请参考本项目中的其他问题,找到类似的内容,并遵循该模式。 最后你应该有一个演示,演示你正在努力解决的问题。
选择控制库目标项目以在模拟器或设备上运行。
你应该看到你的重生发生。 如果没有,那么就会出现这个问题已经解决了。
实施你的修复并重新测试。
在再现文件中实现UITest。 如果您不是UITest专业人员,请再次参考来源中的其他修补程序。 一旦您提交拉动请求,测试将自动运行。
您现在可以创建一个拉请求。 在您的IDE或Git工具中,在GitHub上为Xamarin.Forms远程创建一个Pull请求。 这个过程应该转到GitHub Pull Request页面,并填入Xamarin.Forms Pull Request模板。 我们要求您填写您可以做的一切,并省略任何不适用的内容。
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做出贡献。 没有什么可以让您的拉动请求合并,并且知道您刚刚帮助了一个巨大的惊人的开发人员社区。
有关详细信息并开始使用:
open.xamarin.com for more guidance on contributing to Xamarin open source
Evolution forum proposals
本文出自 “wangccsy” 博客,转载请与作者联系!
原文地址:http://3353175.blog.51cto.com/3343175/1971431