.NET标准库将我们的代码带入更多平台,并为基础类库提供更多API,从而构建出惊人的应用程序。开发人员已经能够使用Xamarin的.NET标准库来跨平台共享代码,并且使用Xamarin.Forms长久地在iOS,Android,UWP,macOS之间创建一个共享的用户界面。当组合起来时,.NET Standard和Xamarin.Forms是天堂之间的匹配,用于最大化我们可以在我们的底层业务逻辑以及用户界面层中跨平台共享的代码量。

在这篇博文中,您将学习如何组合.NET Standard库和Xamarin.Forms来最大限度地提高代码共享和生产率。

.NET标准的东西是什么?

.NET标准是旨在在所有.NET运行时(如.NET Framework,Mono和.NET Core)上可用的.NET API的正式规范 实际上,您可以将其视为一种简化但尚未扩展的便携式类库。 添加到.NET标准库的任何代码都可以在支持.NET标准平台的任何运行时上使用。 此外,我们可以扩展访问.NET基类库中的API,支持更多的平台,而且我们也不必处理PCL配置文件的疯狂。

.NET Standard Diagram

将Xamarin.Forms引入.NET标准

Xamarin.Forms 2.3.5-pre release增加了与.NET Standard的兼容性。 除了共享项目和便携式类库之外,您还可以将.NET标准库添加到代码共享工具带。

文件-> 新建

让我们开始创建一个新的Xamarin.Forms应用程序。 如果您已经有一个现有的Xamarin.Forms应用程序要迁移到.NET Standard,则可以直接跳到下一步。

在Visual Studio中,点击文件 -> 新建工程 -> 跨平台 -> 跨平台应用程序。 选择Master Detail,点后点击确定K这将为使用Xamarin.Forms的iOS,Android和UWP创建一个脚手架移动应用程序,它将列表中的一些数据显示为常见的移动开发方案。

Shows a File -> New Project for a mobile app in Visual Studio.

在Visual Studio(Mac)版中,您可以通过如下操作转到创建类似的模板 文件 -> 新建 -> 多平台 -> 窗口应用程序

添加.NET标准库

将.NET标准库添加到您的应用程序是非常简单的; 它的作用就像将任何其他库添加到您的项目中!

如果您使用Visual Studio 2017,右键单击该解决方案并单击添加 -> 新项目导航到.NET标准部分并添加.NET标准项目。

Add a .NET Standard library to your project.

使用Visual Studio for Mac的开发人员可以通过导航到Multiplatform - > Library - > .NET Standard Library来创建.NET标准库。如果您使用的是Visual Studio 2015,请务必按照我们的入门指南创建并将便携式类库转换为.NET标准库。

将Xamarin.Forms添加到.NET标准库

就像便携式类库一样,我们可以将NuGets添加到.NET标准库。 通过右键单击项目并选择管理NuGet软件包打开NuGet软件包管理器。 切换到浏览选项卡,选择包括预发行,并搜索Xamarin.Forms。 在本博客发布时,只有Xamarin.Forms的预发行版本与.NET Standard兼容,尽管下一个稳定版本中可能会包含.NET Standard兼容性。

Add Xamarin.Forms NuGet to a .NET Standard library.

在每个其他项目(如iOS,Android,UWP等)中,升级到最新的预发行版Xamarin.Forms NuGet,添加对我们创建的.NET标准库的引用,并删除对共享项目的引用, PCL包含您的Xamarin.Forms UI逻辑。

最后,如果要迁移,请将文件从共享项目或PCL复制到.NET标准库。 而已! 您现在正在使用带有Xamarin.Forms的.NET标准库来共享代码:

Using .NET Standard to share code across all the platforms with Xamarin.Forms.


结束语

在这篇博文中,我们创建了一个全新的跨平台移动应用程序,并使用.NET标准库作为代码共享策略来达到所有平台。 要了解有关Xamarin的.NET Standard(不包含Xamarin.Forms)的更多信息,请查看我们的.NET标准支持博客。 如果您仍然对所有.NET标准感到好奇,建议您查看Immo Landwerth的入门视频,阅读docs.microsoft.com上的文档,或者按照GitHub的说明