争取一文说透NuGet

news2024/11/15 16:41:11

一、NuGet是什么?

NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些Visual Studio的插件等。

二、官网:

https://www.nuget.org

三、为什么要使用NuGet?

简单的说NuGet可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery、Newtonsoft.Json、log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用,方便至极。当然网上一些我们常用的类库更新频率不是很高而且即便出了新版本我们也没必要总是保持最新,故这点对我们的帮助比较有限,个人认为NuGet最大的好处在于可以搭建自己的类库服务器,想想一下吧,在一些较大些的公司里面有很多的项目,然后其中有一些是整个组,甚至整个公司通用的类库,当这些类库有更新后我们需要依次拷贝到我们的项目,甚至于有时候我们自己都搞不清楚各个项目里的版本是否一致,有时偶尔一两个项目忘了复制更新出现莫名其妙的错误,为此头疼不已,现在有了NuGet,世界从此而不同。

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

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

程序集在同一个解决方案,直接引用项目
程序集在本地磁盘,浏览.dll文件引入
NuGet程序包管理工具安装


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程序包之后,这些问题就迎刃而解。
 

四、安装第三方组件

1、工具-》NuGet包管理器-》管理解决方案的NuGet程序包

2、选择要安装的项目,选择要安装的包的版本

 

五、Visual Studio自动下载缺失的nuget包

1、打开 工具 - 选项 – NuGet 包管理器 - 常规

2、在程序包还原,勾选“允许NuGet下载缺少的程序包”和下方的“在Visual Studio中生成期间自动检查缺少的程序包”

 如果在build 解决方案时,遇到卡住在“正在还原nuget包…”,可以取消上面的选择。

六、手动下载NuGet包

可以从www.nuget.org官网搜索并下载需要的Nuget包,如下图所示:

点击download package下载到本地,是一个后缀为nupkg的压缩包,可以通过安装本地包的方式安装,对于单个*..nupkg 文件,可以通过压缩软件解压出来,拿到需要的dll文件。

 七、安装本地NuGet包

1、安装本地包前先配置包查询目录,选项-Nuget package manager-程序包源。点击绿色加号

选择本地目录,这样就添加了搜索地址。

 2、搜索本地包,跟搜索第三方包类似可以搜索到自己创建的包。

 Visual Studio之Nuget | Studio (lmlphp.com)

 NuGet是什么?为什么.NET项目中会有NuGet?如何使用NuGet程序包? - 知乎 (zhihu.com)

Visual Studio之Nuget | Studio (lmlphp.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

驱动开发:内核读写内存多级偏移

让我们继续在《内核读写内存浮点数》的基础之上做一个简单的延申,如何实现多级偏移读写,其实很简单,读写函数无需改变,只是在读写之前提前做好计算工作,以此来得到一个内存偏移值,并通过调用内存写入原函数…

Qt绘图高级编程-绘制文本

注意:以下代码是在paintEvent函数中使用的,坐标是在文本的左下角。 1、设置字体样式 /*-----------1、设置字体样式-----------*///设置画家写字的字体//字体名, 字体大小,粗体,是否斜体QFont font( "楷体"…

芝奇幻锋戟Z5 RGB DDR5-7200 24GB内存评测:稳上7800MHz、温度只有56度

一、前言:7200MHz CL36高频内存仅需1.35V电压 在DDR4年代,三星B-Die是当之无愧的超频王者,而今DDR5已然成为主流,大家公认的最好超频的颗粒是SK海力士A-Die。 但并不是每一款采用了海力士A-Die颗粒的内存条都会有强悍的超频能力&a…

B+数的设计步骤

1.节点的结构(如下图) (1)键值对--key是标识;value是存储的具体数据 (2)节点的子节点--存储的是具体的子节点 (3)节点的后节点--标记后一个节点 (4&#xff0…

9 MFC CFileDialog

// SystemWndDlg.cpp: 实现文件 //#include "pch.h" #include "framework.h" #include "SystemWnd.h" #include "SystemWndDlg.h" #include "afxdialogex.h"#ifdef _DEBUG #define new DEBUG_NEW #endif// CSystemWndDlg 对…

git提交忽略target文件

背景 项目如果没有设置.ignore文件,则我们的idea待提交区域有好多红色的新增的target文件、.iml文件等。 解决 本来未忽略前如下: 在.ignore文件中新增如下命令 #忽略所有.svn目录 .svn/ #忽略所有target目录 target/ #忽略所有.idea目录 .idea/ #…

C#,保持亮度的动态直方图均衡化(Brightness Preserving Dynamic Histogram Equalization:BPDHE)源代码

图像增强的主要目的是显示隐藏的图像细节,或者用新的动态范围增加图像对比度。直方图均衡(HE)是用于图像对比度增强的最流行的技术之一,因为HE在计算上快速且易于实现。HE通过基于输入灰度级的概率分布重新映射图像的灰度级来执行…

学生使用的台灯该怎么选择?学生台灯应该这样选

随着时代快速发展,目前我国近视人数达到了7亿,呈现低龄化趋势,儿童及青少年人数占了53.8%。而且现在的学生学业负担都很重,每个家长都不希望自己的孩子近视或加深近视了,都会想尽一切办法保护视力。而护眼台灯就成了家…

光伏储能电能管理系统解决方案蓄电池管理

概述 在我国新型电力系统中,新能源装机容量逐年提高,但是新能源比如光伏发电、风力发电是不稳定的能源,所以要维持电网稳定,促进新能源发电的消纳,储能将成为至关重要的一环,是分布式光伏、风电等新能源消…

怎么用ai作图?简单几步教会你ai绘画

当我和我的朋友们闲聊的时候,一个话题引起了我们的兴趣——更新社交媒体头像。其中有一个朋友提出,想要制作一个与真人无异、美观大方的头像,但是却不知道该如何下手。于是乎,我们开始讨论ai绘画头像软件。大家都纷纷表示听说过&a…

基于Java+SpringBoot+vue的实验室管理系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

cubemx hal stm32 atgm336h GPS 北斗 定位 模块 驱动代码

代码部分 atgm336h.c #include "atgm336h.h" #include "stdio.h" #include "string.h"char rxdatabufer; u16 point1 0;_SaveData Save_Data; LatitudeAndLongitude_s g_LatAndLongData {.E_W 0,.N_S 0,.latitude 0.0,.longitude 0.0 };…

Docker网络架构三剑客CNM,Libnetwork和Driver

Docker网络架构主要由三部分组成:CNM,Libnetwork和Driver。 1.CNM CNM(Container Network Model)是一种网络模型,用于定义容器的网络架构和实现容器之间的通信。 这其中也有三要素: 沙盒:Sand…

基于matlab使用无限阵列分析对大型阵列中的互耦进行建模(附源码)

一、前言 此示例使用无限数组分析对大型有限数组进行建模。晶胞上的无限阵列分析揭示了特定频率下的扫描阻抗行为。此信息与隔离元件图案和阻抗的知识一起使用,以计算扫描元件图案。然后,使用数组中的每个元素都具有相同扫描元素模式的假设对大型有限数组…

造纸工厂配电室环境监控系统的应用案例与硬件选型

摘要:智能配电室环境监控系统可实现自动巡检、自动预警等功能,减少人员到现场巡视次数,能及早发现设备的潜在风险,迅速检测故障,节约维护保养时长,为配电生产检修、运行、各业务的标准化、规范化管理提供有…

1:即使设计-ui:尺寸和单位

一: 1: 一倍尺寸 378*812 2:二倍尺寸 750*1624 3:三倍尺寸 1125*2436 二:PX和PT px:物理像素 pt:逻辑像素 pt只存在一倍图中 在一倍图,ptpx,二倍图 1px2pt 三:DP和SP

AI开源路在何方丨2023智源大会精彩回顾

导读 当下,AI开源已经成为了人类开源创新的主战场,是超大规模人类智力协同的最佳组织形式。得益于开源协作持续不断地推进,AI在这个时代飞速发展。可以说如果没有开源社区建设,就不会有今天人工智能的成就。 在2023智源大会AI开源…

【python】基于multiprocessing.Pool实现python并行化的坑和解决方案

坑1:apply_async调用的子函数不执行或执行不彻底的解决方案 解决:使用apply_async时传入error_callback检查报错 from multiprocessing import Pooldef processFolder(idx, folders, o_dir):train_mesh TrainMeshes(folders)output_path os.path.join…

python小游戏——骰子猜大小

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 我们已经基本学完了,逻辑判断和循环的用法&#…

Maven历史版本的下载

Maven历史版本的下载 打开Maven官网https://maven.apache.org/ 点击Download 点击Maven 3 archives