android ios vs2017,使用 Visual Studio 2017 或 2019 为 Xamarin 创建 NuGet 包(适用于 iOS、Android 和 Windows) | Mi...

使用 Visual Studio 2017 或 2019 为 Xamarin 创建包

11/05/2019

本文内容

Xamarin 包包含在 iOS、Android 和 Windows 上使用本机 API 的代码,具体取决于运行时操作系统。 虽然这很简单,但最好让开发人员通过通用的 API 外围应用从 PCL 或 .NET Standard 库中使用包。

在本演练中,将使用 Visual Studio 2017 或 2019 创建可在 iOS、Android 和 Windows 的移动项目中使用的跨平台 NuGet 包。

必备条件

在通用 Windows 平台 (UWP) 和 Xamarin 中使用 Visual Studio 2017 或 2019。 可以从 visualstudio.com 免费安装 Community 版;当然,也可以使用 Professional 和 Enterprise 版。 若要包含 UWP 和 Xamarin 工具,请选择自定义安装并选中相应的选项。

NuGet CLI。 从 nuget.org/downloads 下载 nuget.exe 的最新版本,将其保存到选择的位置。 然后将该位置添加到 PATH 环境变量(如果尚未添加)。

备注

nuget.exe 是 CLI 工具本身,不是安装程序,因此一定要保存从浏览器下载的文件,而非运行。

创建项目结构和抽象代码

下载并运行适用于 Visual Studio 的跨平台 .NET Standard 插件模板扩展。 使用这些模板可轻松创建本演练所需的项目结构。

在 Visual Studio 2017 中,选择“文件”>“新建”>“项目”,搜索 Plugin,选择“跨平台 .NET Standard 库插件”模板,将名称更改为“LoggingLibrary”,然后单击“确定”。

3205359f0a6f1b53985c4fcc30d9af9b.png

在 Visual Studio 2019 中,选择“文件”>“新建”>“项目”,搜索 Plugin,选择“跨平台 .NET Standard 库插件”模板,然后单击“下一步”。

7d10151fce300bbc0873ab30f8bb2db3.png

将名称更改为 LoggingLibrary,然后单击“创建”。

cc1dba75a8fae09c7bcf77c293e97aee.png

生成的解决方案包含两个共享项目,以及各种平台特定的项目:

ILoggingLibrary 项目,该项目包含在 ILoggingLibrary.shared.cs 文件中,用于定义组件的公共接口(API 外围应用)。 你将在此文件中定义库的接口。

另一个共享项目包含 CrossLoggingLibrary.shared.cs 中的代码,这些代码将在运行时定位抽象接口的平台特定实现。 通常不需要修改此文件。

每个平台特定的项目(如 LoggingLibrary.android.cs)在其各自的 LoggingLibraryImplementation.cs (VS 2017) 或 LoggingLibrary..cs (VS 2019) 文件中都包含该接口的本机实现。 你将在此文件中生成库的代码。

默认情况下,ILoggingLibrary 项目的 ILoggingLibrary.shared.cs 文件包含接口定义,但不包含方法。 为进行本演练,请按如下所示添加 Log 方法:

using System;

using System.Collections.Generic;

using System.Text;

namespace Plugin.LoggingLibrary

{

///

/// Interface for LoggingLibrary

///

public interface ILoggingLibrary

{

///

/// Log a message

///

void Log(string text);

}

}

编写平台特定的代码

若要实现 ILoggingLibrary 接口及其方法的平台特定实现,请执行以下操作:

打开每个平台项目的 LoggingLibraryImplementation.cs (VS 2017) 或 LoggingLibrary..cs (VS 2019) 文件并添加必要的代码。 例如(使用 Android 平台项目):

using System;

using System.Collections.Generic;

using System.Text;

namespace Plugin.LoggingLibrary

{

///

/// Implementation for Feature

///

public class LoggingLibraryImplementation : ILoggingLibrary

{

///

/// Log a message

///

public void Log(string text)

{

throw new NotImplementedException("Called Log on Android");

}

}

}

在想要支持的每个平台的项目中重复此实现。

右键单击解决方案,选择“生成解决方案”,检查工作并生成接下来将要打包的项目 。 如果遇到关于缺少引用的错误,请右键单击解决方案,选择“还原 NuGet 包”,安装依赖项并重新生成 。

备注

如果使用的是 Visual Studio 2019,则在选择“还原 NuGet 包”并尝试重新生成之前,需要将 MSBuild.Sdk.Extras 的版本更改为 LoggingLibrary.csproj 中的 2.0.54。 只能通过以下方式访问此文件:首先右键单击该项目(在解决方案下方)并选择 Unload Project,然后右键单击卸载的项目并选择 Edit LoggingLibrary.csproj。

备注

若要为 iOS 生成,需要一台连接到 Visual Studio 的联网 Mac,如 Introduction to Xamarin.iOS for Visual Studio(Xamarin.iOS for Visual Studio 简介)中所述。 如果没有可用的 Mac,请清除配置管理器中的 iOS 项目(上面的步骤 3)。

创建并更新 .nuspec 文件

打开命令提示符,导航到 .sln 文件下一级的 LoggingLibrary 文件夹,然后运行 NuGet spec 命令,创建初始 Package.nuspec 文件:

nuget spec

将该文件重命名为 LoggingLibrary.nuspec 并在编辑器中打开。

将文件更新为与以下内容匹配,并将 YOUR_NAME 替换为适当的值。 具体而言, 值在 nuget.org 中必须是唯一的(请参阅创建包中所述的命名约定)。 另请注意,还必须更新创建者和说明标记,否则在打包步骤中会出现错误。

LoggingLibrary.YOUR_NAME

1.0.0

LoggingLibrary

YOUR_NAME

YOUR_NAME

false

Awesome application logging utility

First release

Copyright 2018

logger logging logs

提示

可使用 -alpha、-beta 或 -rc 为包版本添加后缀,将包标记为预发行版本,有关预发行版本的详细信息,请查阅预发行版本。

添加引用程序集

若要包含平台特定的引用程序集,请将以下内容添加到 LoggingLibrary.nuspec 的 元素,以适用于支持的平台:

备注

若要缩短 DLL 和 XML 文件的名称,请右键单击任何给定项目,选择“库”选项卡,然后更改程序集名称 。

添加依赖项

如果有特定的本机实现依赖项,请使用带有 元素的 元素来指定它们,例如:

例如,以下代码用于将 iTextSharp 设置为 UAP 目标的依赖项:

最终 .nuspec

现在,最终 .nuspec 文件应该如下所示,其中应再次将 YOUR_NAME 替换为适当的值:

LoggingLibrary.YOUR_NAME

1.0.0

LoggingLibrary

YOUR_NAME

YOUR_NAME

false

Awesome application logging utility

First release

Copyright 2018

logger logging logs

打包组件

如果已完成的 .nuspec 引用需要包含在包中的所有文件,便可运行 pack 命令:

nuget pack LoggingLibrary.nuspec

这将生成 LoggingLibrary.YOUR_NAME.1.0.0.nupkg。 在类似 NuGet 包资源管理器的工具中打开此文件并展开所有节点,即可看到以下内容:

d10f045e2a845610967c472dae356704.png

提示

.nupkg 文件实际上是具有其他扩展名的 ZIP 文件。 然后,也可通过将 .nupkg 更改为 .zip 来检查包内容,但将包上传到 nuget.org 之前,请记得恢复扩展名。

若要使你的包可供其他开发人员使用,请按照发布包中的说明进行操作。

相关主题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值