加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

NuGet程序包

发布时间:2022-11-16 19:31:05 所属栏目:应用 来源:互联网
导读: 在.NET应用程序编程开发中,开发者通常使用类库来管理、维护属于同一分类的程序代码,以便代码的重用。一般情况下,处于同一类库的所有类都位于同一程序集。
这些类库被编译器编译后会生成

在.NET应用程序编程开发中,开发者通常使用类库来管理、维护属于同一分类的程序代码,以便代码的重用。一般情况下,处于同一类库的所有类都位于同一程序集。

这些类库被编译器编译后会生成扩展名为.dll的动态链接库文件,你可以在其它项目中通过引用的方式导入这些.dll程序集并使用其中被封装的类及成员。

但随着项目越来越大、越来越多,使用手动引用.dll动态链接库的方式让程序包管理和维护变得非常困难。在这种情况下,NuGet程序包管理工具便应运而生。

NuGet程序包就好比前端开发中的npm包,Java开发中的Maven或者Gradle,它们都是管理自己语言领域的程序依赖包的工具。负责控制程序包版本,维护包与包之间的依赖,有了包管理工具,你可以快速地安装包,还原包等。

在正式接触NuGet程序包工具前,先来一步一步回顾.NET项目中程序包引入的进化历。

引入程序集的方式

引入程序集的方式有多种,如:

1.引用项目方式

假如当前有一个名为NugetDemo.Payment的类库项目和一个名为ConsoleApp的控制台应用程序,现需要在ConsoleApp项目中通过引用项目的方式引入NugetDemo.Payment,方法如下:

1.右键单击依赖项,点击添加项目引用,如图:

2.在弹出的引用管理器窗口中选中NugetDemo.Payment,点击确定,如图:

3.Visual Studio将把选中的项目添加到当前项目的依赖项->项目列表,如图:

2.浏览文件方式

还是在ConsoleApp项目中,假如有另外一个支付宝的程序集,如图:

应用程序包_程序应用初始化失败_百度轻应用 小程序

1.还是按归引用项目的方式应用程序包,右键单击依赖项,点击添加项目引用

2.在弹出的引用管理器窗口选中浏览,如图:

3.再点击右下角的浏览按钮,在文件资源管理器中找到刚才准备的Ali.Alipay.dll文件,如图:

4.选择后点击右下角的添加按钮,将自动回到如下界面:

5.选中刚才浏览的Ali.Alipay.dll,最后点击右下角的确定按钮,Visual Studio将会把这个.dll文件添加到当前项目的依赖项->程序集列表中,如图:

无可厚非,以上的两种引用程序集的方式在结果上是没有问题的。但这种方式只适合个人项目,当你的团队成员或者团队项目达到一定量级之后,程序集的管理、维护、版本控制等问题会让你头疼。

到最后,你可能不知道当前引用的程序集是哪个版本?在哪里可以找到正确的程序集版本?它们之间的依赖关系是怎么样的?如果共享程序集?

有了NuGet程序包之后,这些问题就迎刃而解。

NuGet程序包

NuGet程序包是微软为.NET(包括.NET Core)平台提供的程序集共享包。

简单地说,NuGet包是一个扩展名为.nupkg的ZIP文件,其中包含了已编译代码(.dll)与该代码相关的其他文件,以及包版本号等信息的描述信息。

开发人员可以创建代码共享的程序包并将其发布到公共或私有主机。包使用者从合适的主机获得这些包,将它们添加到他们的项目中,然后在他们的项目代码中调用包的功能。然后NuGet自己处理所有中间细节(包括安装、卸载、依赖关系维护,版本控制等)。

微软官方为公共的.NET共享程序包提供专门的公有托管服务,地址为:NuGet Gallery | Home

目前有超过25万的程序包被分享在这里,如图:

程序应用初始化失败_应用程序包_百度轻应用 小程序

NuGet除了支持公共的nuget.org主机外还支持私有主机,所以你可以搭建个人或者公司内部的NuGet私有服务器,以达到内部分享程序包的目的。

NuGet程序包的安装和卸载

管理NuGet程序包的方式有多种,其中最常用的分别为:一、通过NuGet包管理器;二、通过命令行管理。其中NuGet包管理器是Visual Studio或者Rider这样的集成开发环境才具备的客户端管理工具。

下面以Visual Studio 2022 预览版(17.0.0 Preview 3.1)为例演示。

NuGet包管理器 安装NuGet

假如当前有一个基于.NET 5的控制台应用程序,结构如下:

现需要在这个控制台中安装Newtonsoft.Json以便进行json序列化和反序列化操作。那么,我们可以通过右键依赖项->管理NuGet程序包来打开NuGet包管理器,如下图:

然后选择浏览选项卡,并在搜索框中键入关键词,在搜索结果中选中需要安装的程序包,最后点击右侧的安装按钮,如下:

在弹出的对话框中,点击确定按钮:

百度轻应用 小程序_程序应用初始化失败_应用程序包

Visual Studio将自动下载选中的程序包及其依赖包,并将其添加到当前项目的依赖项中,如下图:

现在,可以在这个ConsoleApp1项目中调用Newtonsoft.Json组件所有可访问的功能了,以下示例演示了利用Newtonsoft.Json将一个json字符串反序列化成实体对象,代码如下:

百度轻应用 小程序_应用程序包_程序应用初始化失败

登录后复制

using Newtonsoft.Json; class Program { static void Main(string[] args) { // 模拟一个JSON字符串 var json = "{\"id\":1,\"name\":\"Rector\",\"age\":18}"; // 调用JsonConvert.DeserializeObject()泛型方法反序列化 var person = JsonConvert.DeserializeObject

(json); Console.WriteLine(person.ToString()); Console.ReadKey(); } } /// /// 定义一个与JSON字符串字段匹配的实体类 /// public class Person { public int Id { get; set; } public string Name { get; set; } public short Age { get; set; } /// /// 重写ToString()方法 /// /// public override string ToString() { return $"id:{Id},name:{Name},age:{Age}"; } }

运行结果如下图:

百度轻应用 小程序_应用程序包_程序应用初始化失败

NuGet包版本管理

NuGet包有版本之分,不同的版本以版本号作为标识,比如上面安装的Newtonsoft.Json程序包,安装的时候选择了当前的最新版本(13.0.1),如图:

这个下拉列表列出了Newtonsoft.Json程序包所有可用的版本号,通过选择不同版本号即可安装不同版本的Newtonsoft.Json程序包,也可以通过这个版本下拉列表实现NuGet程序包版本的升/降级。

比如,当前我们已经安装了版本13.0.1,那么,选择任意一个比它版本号小的即为降级,比如这里选择降级为12.0.3,点击更新按钮即可完成降级。

同理,选择任意一个比当前版本号大的版本,即可完成升级版本的操作。

问:NuGet包为什么会有不同的版号呢?

答:NuGet的版本号作为不同版本的标识。一个NuGet包的功能在不断地完善和扩展,每次对NuGet包进行迭代(可能是修复bug,也可能是新增功能),都会为其指定不同的版本号(通常这个版本号是向上累加的),不同版本之间相互独立、互不影响。

NuGet包卸载

有安装就有卸载,假如某个项目不再需要某个NuGet程序包,则可以通过NuGet包管理器中的卸载按钮来一键卸载掉指定的NuGet程序包(其依赖的程序包也会被一并卸载),如图:

卸载Newtonsoft.Json包后,上面演示的反序列化示例代码在编译报错了,如图:

程序应用初始化失败_应用程序包_百度轻应用 小程序

NuGet命令行

除了NuGet包管理器外,还可使用NuGet命令行来安装。

首先,打开NuGet的官网:NuGet Gallery | Home,在搜索框中键入要查找的NuGet包关键字(这里演示Newtonsoft),点击搜索按钮,如图:

在搜索结果列表中点击符合要求的程序包(Newtonsoft.Json),如图:

NuGet是什么?为什么.NET项目中会有NuGet?如何使用NuGet程序包? | 码友网

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!