[Xamarin.Android] 发布NuGet套件

前言

在Xamarin中,可以将自己开发的项目包装成为NuGet套件发布至NuGet Server,来提供其他开发人员使用。本篇介绍如何封装并发布NuGet套件,让开发人员能自行建立NuGet Server中的NuGet套件,为自己留个纪录也希望能帮助到有需要的开发人员。

封装

  1. 首先将要封装成NuGet套件的程序代码,建立为Class Library (Android)类型的项目。在项目完成编译之后取得产出的dll档,这个dll档就是要封装进NuGet套件发布给其他开发人员使用的共享组件。而这边需要先将dll档,放到一个封装文件夹中备用。

  2. 接着到NuGet官网下载NuGet.exe用来封装NuGet套件,这边同样的将NuGet.exe放到封装文件夹中备用。

  3. 在存放dll檔、NuGet.exe的封装文件夹中,使用记事本应用程序加入一个扩展名为nuspec的文本文件,并且于内容中加入下列Xml格式的数据。

    <?xml version="1.0"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
    <metadata>
    <id>CustomControlSample</id>
    <version>1.0.0</version>
    <title>CustomControlSample</title>
    <authors>Clark</authors>
    <owners>Clark</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>CustomControlSample</description>
    <copyright>Copyright © 2014</copyright>
    <dependencies>
    </dependencies>
    </metadata>
    <files>
    <file src="CustomControlSample.dll" target="lib\MonoAndroid" />
    </files>
    </package>

    扩展名为nuspec的nuspec档,是用来描述NuGet套件信息的Xml格式文本文件。其中比较重要的信息卷标如下:

    • id:编号。
    • version:版本。
    • title:名称。
    • authors:作者
    • owners:拥有者
    • description:说明
    • copyright:版权宣告
    • files:共享组件集合
    • file:共享组件

    在这其中比较需要注意的是file标签。file卷标的src参数内容,定义共享组件的文件名及档案路径。而另一个file标签的target参数内容,则是定义共享组件的目标平台。(目标平台是Xamarin.Android内容为lib\MonoAndroid、目标平台为Xamarin.iOS内容为lib\MonoTouch)

    <files>
    <file src="CustomControlSample.dll" target="lib\MonoAndroid" />
    </files>

  4. 接着开启命令提示字符,依照下列的执行参数,来执行先前取得备用的NuGet.exe。透过这样的执行参数设定,NuGet.exe就会依照nuspec文件所描述的套件信息,来建立扩展名为nupkg的NuGet封装档。而建立起扩展名为nupkg的nupkg档,也就完成了整个NuGet套件封装的流程。

    NuGet.exe pack CustomControlSample.nuspec

发布

透过NuGet.exe建立nupkg档之后,接着就是要将封装好的NuGet套件发布到NuGet Server。发布套件到NuGet Server有很多种方式,而NuGet Server也可分为NuGet官方服务器、私有企业服务器...等等。本篇文章的范例介绍如何透过NuGet官方网站的功能,来发布NuGet套件到NuGet官方服务器。

  1. 开启NuGet官网,并且在登入后进入Upload Package功能页面。

  2. 点选页面上的「选择档案」按钮,并且选择先前透过NuGet.exe所建立的nupkg檔,然后点选「Upload」按钮来上传档案。

  3. 上传nupkg文件之后,页面会显示目前上传的NuGet套件信息内容。如果发现信息内容有误,也可以在这个页面直接编辑。当确认过信息内容没有问题之后,就可以点选页面最下方的「Submit」按钮来发布NuGet套件。

  4. 发布NuGet套件的过程会比较久一点,花点耐心等候,就可以看到发布完成的NuGet套件主页。

使用

发布NuGet套件到NuGet官方服务器之后,其他开发人员在Xamarin.Android项目中,就可以透过NuGet套件管理工具来下载并且使用NuGet套件。

  1. 在Xamarin.Android项目中,选择项目后点击右键并且选择「管理NuGet套件...」,来开启NuGet套件管理工具。

  2. 在NuGet套件管理工具中,输入先前发布的NuGet套件名称,就可以在管理工具中找到该套件。

  3. 接着点选套件上的「安装」按钮,就可以将NuGet套件下载并且安装到Xamarin.Android专案之中。

  4. 后续在Xamarin.Android项目中,就可以直接使用NuGet套件所提供的类别了。

范例下载

范例程序代码:点此下载

[Xamarin.Android] 发布NuGet套件的更多相关文章

  1. [Xamarin.Android] 使用Component套件

    [Xamarin.Android] 使用Component套件 前言 在Xamarin中,可以将自己开发的项目包装成为Component套件发布至Xamarin Component Store,来提供 ...

  2. 7.xamarin.android 发布签名与控制apk大小

    概述 做了xamarin android 后大家想打包一个apk,发布给其他人使用本章我们将带领大家如何打包签名一个apk. 打包 对于VS2017 或者是VS MAC来说打包一个APK非常简单. 首 ...

  3. Xamarin.Android 调用Web Api(通过ListView展示远程获取的数据)

    xamarin.android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin.android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...

  4. Xamarin.Android之简单的抽屉布局

    0x01 前言 相信对于用过Android版QQ的,应该都不会陌生它那个向右滑动的菜单(虽说我用的是Lumia) 今天就用Xamarin.Android实现个比较简单的抽屉布局.下面直接进正题. 0x ...

  5. Xamarin.Android VSTS 持续集成

    这些天做了一个基于 VSTS 的 Xamarin.Android的持续集成,这里分享下 Build Agent 环境需求 DotNetFramework msbuild visualstudio An ...

  6. [置顶] Xamarin android中使用signalr实现即时通讯

    前面几天也写了一些signalr的例子,不过都是在Web端,今天我就来实践一下如何在xamarin android中使用signalr,刚好工作中也用到了这个,也算是总结一下学到的东西吧,希望能帮助你 ...

  7. XAMARIN.ANDROID SIGNALR 实时消息接收发送示例

    SignalR 是一个开发实时 Web 应用的 .NET 类库,使用 SignalR 可以很容易的构建基于 ASP.NET 的实时 Web 应用.SignalR 支持多种服务器和客户端,可以 Host ...

  8. APP并非一个人在战斗,还有API—Xamarin.Android回忆录

    前言 一般来说,一个客户端APP并非独立存在的,很多时候需要与服务器交互.大体可分为两方面的数据,常规字符串数据和文件数据,因为这两种数据很可能传输方式不一样,比如字符串之类的数据,使用HTTP协议, ...

  9. Xamarin.Android和UWP之MVVM的简单使用(一)

    0x01 前言 就目前而言,MVVM可以说是挺流行的,无论是web端还是移动端,web端的主要代表angularjs,avalonjs等, 移动端(xamarin,uwp)的代表应该是mvvmligh ...

随机推荐

  1. WPF之DataGrid

    1.WPF 4 DataGrid 控件(基本功能篇) 基本使用,绑定数据展示 2.WPF 4 DataGrid 控件(自定义样式篇) 定义行,列,头,单元格等样式 3.WPF 4 DataGrid 控 ...

  2. 再谈LRU双链表内存管理

    N年前我写了个双链表也发了博客,还添了代码.但是那个代码不但复杂,而且还有有问题的,一直懒得整理,放在空间误导别人.最近在写服务端,今天抽点空补一篇. 关于LRU网上随便搜,有过后端经验的人应该很多都 ...

  3. Node.js 的module 系统

    相较于原生的JavaScript,不同的JavaScript文件之间很难共享变量.有鉴于此,Node.js在JavaScript的基础上进行了扩充,引入了require,exports,module三 ...

  4. 创维37K05HR黑屏有声音故障维修

    转载1: 接一台创维新机37L05HR,1年多,刚过保.开机图像声音正常,放10分钟左右黑屏.声音正常.关机再开有正常.2分钟又出现黑屏.在保修期内,售后 来修两次此类故障都没有根治.拆机测5V 12 ...

  5. php分页类代码带分页样式效果(转)

    php分页类代码,有漂亮的分页样式风格 时间:2016-03-16 09:16:03来源:网络 导读:不错的php分页类代码,将类文件与分页样式嵌入,实现php查询结果的精美分页,对研究php分页原理 ...

  6. 实战android菜单项之XML加载菜单与动态菜单项[转]

    原文地址:http://blog.csdn.net/kaiwii/article/details/7767225 自定义android应用程序的菜单项首先要知道切入点.经过学习,知道主要是两个Acti ...

  7. Cocoa Drawing Guide学习part1——基础和图形上下文 (转)

    原文:http://noark9.github.io/2013/12/28/cocoa-drawing-guide-study-part-1/ 简介 cocoa drawing由AppKit提供并且也 ...

  8. JS思维之路菜鸟也能有大能量(2)--模拟数组合并concat

    我们有两个这样的数组 var arr1 = [1,2,3]; var arr2 = [4,5,6]; 任务:合并成这样,请至少提供两种思路. var arr1 = [1,2,3,4,5,6]; 思路一 ...

  9. 找出链表中倒数第 k 个结点

    /* 题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表 的尾指针. 链表结点定义如下: struct node { int data; struct node * ...

  10. maven pox.xml 设置主入口配置节点

    <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven ...