在.NET程序开发中,NuGet包扮演着非常重要的角色。NuGet是一个在线存储库,用于存放.NET程序的动态链接库(.dll)。许多程序员,包括在内,都为NuGet上可用的包做出了贡献。NuGet允许开发者轻松地引用第三方程序员提供的库,只需输入一条命令即可。在之前的帖子中,已经讨论了使用Mono在Ubuntu上进行编程的基础知识,本文将讨论Mono中的NuGet包。NuGet包在Visual Studio中非常有用,可以从NuGet下载最受欢迎的包,以提高应用程序的生产力。个人多次使用Newtonsoft.Json包将基于JSON文件和C#代码的数据源引入应用程序,一个常见的例子是为认证系统编写的LoginKeys框架。还有很多其他有用的包,在编程时可能会想要使用。在本文中,将讨论如何在应用程序开发项目中包含这些包的方法。
为了让更好地理解NuGet包、包管理和如何在项目中使用它们,在本节中,将演示两件事:如何管理仓库以及从哪里获取,以及如何安装包并使用它们。
第一步是配置IDE。默认情况下,IDE配置为从NuGet的当前API版本获取包,即https://www.nuget.org/api/v2/。将来可能会发生变化,这就是为什么可能需要配置IDE的原因。只需展示,设置可在IDE设置下找到。
可以编辑此设置以配置IDE从实际位置获取包。还可以通过选择“配置源”从NuGet包管理窗口本身打开这些设置。这将允许更改源和其他设置,还可以更改库的名称。然而,这相当简单,相信可以自己管理。现在,让考虑在应用程序中安装和使用包。
有趣的部分开始了!可以使用MonoDevelop提供的GUI窗口轻松安装包。可以搜索包,或者安装在listview中显示的最受欢迎包。安装包非常简单。
在下面的图片中演示了安装包的步骤:可以按照相同的步骤安装任何包。在列表中找到包。选择了Json.NET包。如果在选择包时感到困惑,可以在右侧检查包的说明,这里共享了名称、版本、描述和作者详细信息。可以确保选择了库的“正确”版本。点击“添加包”以添加它。
这个选项不是必需的,用于打开和关闭测试版、预发布版本。现在,一旦点击了“添加包”按钮,MonoDevelop会花费一两分钟,然后添加库包到应用程序。在系统中,它大约需要5秒钟,所以不用担心它会下载并安装包,一会儿。一旦安装完成,引用将如下所示:
Json.NET库是Newtonsoft.Json库,因此它被添加到项目下的“来自包”类别。这已经被添加到项目中,然后可以在项目中使用它。在这样做之前,让向展示如何在NuGet中搜索项目包。
这是另一个有趣的问题,在Mono环境中,从库中下载的项目包存储在同一个包目录中。有关包目录的更多信息,请阅读之前的帖子:在Ubuntu上构建C#应用程序:项目文件和输出。在目录中,会创建一个名为“packages”的新文件夹,然后新引用的包将存储在那里以供后续引用。
将在该文件夹中找到代码和其他文件。这样做是为了让以后可以使用该包,NuGet中的包是在线的,因此不能承受每次想要构建项目时都要支付网络延迟的代价,下载程序集是最简单的方法。
NuGet管理窗口还提供了搜索栏,可以使用它来搜索库。列表只显示最受欢迎的,但如果想搜索第三方平均项目库,这些库不是人们经常使用的,可以使用搜索框来搜索这些库,窗口会显示它在库中找到的匹配项。然后可以选择这些结果,并获取想要安装在应用程序项目中的内容。例如,要安装LoginKeys包,可以在搜索框中写入关键字,NuGet包管理器会显示结果,以便可以选择搜索结果。
可以看到GUI窗口已经显示了结果,并且它还提供了详细信息,以便可以知道正在安装库的正确版本,来自信任的作者(信任吗?不!),然后可以按照相同的步骤将此包安装到项目中。
在Mono中,更新和还原NuGet包也非常简单,只需点击一下!是的,请看下面:这些是提供的选项,用于更新或还原包,只需点击选项,Mono就会为完成!还有其他许多选项也可供选择。
一旦将包添加到项目中,还需要在源文件中引用它,尽管程序集是可用的,但为了能够在源文件中引用函数,还需要在项目中添加using语句。有Newtonsoft.Json包,为了能够使用库,需要引用它,然后构建应用程序。
看看以下代码:
using System;
using Newtonsoft.Json;
namespace NugetPackages
{
class MainClass
{
public static void Main(string[] args)
{
object anon = new { Name = "Afzaal Ahmad Zeeshan", Age = 20 };
var serialized = JsonConvert.SerializeObject(anon);
Console.WriteLine(serialized);
}
}
}
这段代码将安全地编译和执行。这段代码的输出是这样的(想,已经知道了)。
非常简单,根本不需要解释,因为Newtonsoft.Json命名空间已经非常有名且广泛使用的包。