争取一文说透NuGet

article/2025/10/16 14:11:07

一、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://chatgpt.dhexx.cn/article/HbS7Ruud.shtml

相关文章

NuGet是什么?理解与使用

如果你了解python,那么它类似pip。 如果你了解nodejs,那么它类似npm。 如果你了解ruby,那么它类似gem。 对,它就是一个包(package)管理平台,确切的说是 .net平台的包管理工具,它提供…

接口模板 接口文档

接口模板、接口文档、希望解决接口写的乱七八糟的问题 模板下载 word版 excel版

日期+列表+折线图

#1、分析: 1.1日期: 日:选项为日的时候,右边日期选择YYYY-MM-DD,折线图显示当天的24小时 周:选择为周的时候,右边日期选择YYYY-MM-DD,折线图显示当前日期往前6天 月…

如何制作竖线的效果

描述 在很多网页中, 都会有一个小竖线的效果 (如图) . 实现这个小竖线的效果有很多种方法. 在这里记录一下. 方法 1. 通过::after 在元素后面追加一个宽度为1px的元素 .search-box .search span::after {position: absolute;right: -8px;content: "";width: 1p…

前端画竖线

一条竖线的写法 实现原理&#xff1a; 利用浮动,设置width:1px 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"&g…

html中竖线怎么写,网页中竖线的几种做法

Q&#xff1a;网页中竖线的几种做法 A&#xff1a;1、用水平线做&#xff1a; 一般水平线的是宽长高短 color#000000>&#xff0c;做竖线我们可以反过来宽短高长&#xff0c; width"1"size"1000" color#000000>&#xff0c;怎么样&#xff1f;竖线出…

latex | 表格竖线被截断 、表格中文字靠近上方

表格竖线被截断 使用latex做表格的时候&#xff1a; 用的是三线表&#xff1a;\toprule midrule bottomrule 会出现表格竖线被截断的问题&#xff1a; 解决办法&#xff1a; 把\toprule midrule bottomrule替换成hline即可 表格文字靠近上方 但是这样修改之后会出现另一…

Latex中表格的竖线截断问题

Latex中使用代码 \begin{table}[htbp] \centering \caption{Add caption} \begin{tabular}{|c|c|c|c|} \toprule Avg. Degree & Node No. & Cascade No. & Cascade Length \\ \midrule 3-10 & 300-1000 & 100-500 & 10-20 \\ \bottomrule \end{tabul…

CSS 画一条横线/竖线

作为优秀的java程序员,扎实(la ji )前端水平是我工作的基础 , 所以今天记录一下怎么用css画一条横线/竖线出来 , 以此为笔记, 将来不需要去翻阅别人的代码 废话不多说 笔记开始 #CSS 代码 /*中间的过度的横线*/.link-top {width: 50%;height: 1px;border-top: solid #ACC0D8…

设置文字之间的竖线

1、定义文字 2、css设置样式

Latex 三线表 横线竖线短横线

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.blog.csdn.net] 目录 样式复现 语法解释 以这个图为例&#xff1a; 样式复现 导言区先添加&#xff1a; \usepackage{tabu} % 表格插入 \usepackage{multirow} % 一般用以设计…

echart markLine x轴 两点之间 或 日期之间 的竖线箭头

业务需求是想实现在两个月份之间的一个竖线代表月份启动日期 这个竖线是动态的 。 这里的难点是&#xff1a;x轴是日期 通过坐标找不到日期之间的中间的位置 。 解决方案&#xff1a;因此再创建有个x轴 我这里新的x轴刻度放大了五倍 根据比例找到你画的竖线在新的x轴的位置 &am…

C#中抽象类与抽象方法的详解

前言:在上一篇博文关于重写的前提说明中提到了,那么今天我们一起来看看抽象类以及抽象方法…,首先我们顺着目录从抽象类的介绍开始学习: 目录: 一.抽象类:1.声明形式(创建抽象类):2.抽象类的调用: 二.抽象类的规则:三.抽象方法:四.应用举例:五.抽象类的运用意义;六.总结: 一.抽…

java的抽象方法和抽象类

一个方法&#xff0c;要么是抽象方法&#xff0c;要么必须给出方法的具体实现。 比如我有个animal类&#xff0c;有个吃东西方法&#xff0c;我不希望在animal类中给出这个方法的具体实现&#xff0c;因为不同动物&#xff0c;吃的东西不一样。所以要给这个方法声明为抽象方法…

Java抽象类/抽象方法定义及其特性详解

类的继承结构中&#xff0c;越往上的类越具有通用性&#xff0c;也就越抽象。当它抽象到一定程度&#xff0c;就变成概念成框架&#xff0c;不能再产生实例化的对象了。例如“交通工具”&#xff0c;就无法用它来产生一个实例。 对应这一现象&#xff0c;Java中提供了抽…

Java的抽象类和抽象方法

目录 1、抽象类 2、抽象方法&#xff1a; 3、 抽象类和抽象方法的使用 1、抽象类 当父类的方法不能确定时&#xff0c;可以用abstract关键字来修饰方法&#xff0c;这个方法时抽象方法&#xff0c;用abstract来修饰该类就是抽象类。 public abstract class Animal {public…

抽象类必须要有抽象方法吗?

答案是&#xff1a;不必须。 这个题目主要是考察对抽象类的理解。 说一下我个人的理解吧。 1.如果一个类使用了abstract关键字修饰&#xff0c;那么这个类就是一个抽象类。 2.抽象类可以没有抽象方法 3.一个类如果包含抽象方法&#xff0c;那么这个类必须是抽象类&#xf…

抽象类和抽象方法定义及讲解?

首先说抽象类&#xff1a; &#xff08;1&#xff09;抽象类只能作为其他类的基类&#xff0c;它不能直接实例化&#xff0c;对抽象类不能使用new 操作符。 &#xff08;2&#xff09;抽象类中可以包含抽象成员&#xff0c;但非抽象类中不可以。 &#xff08;3&#xff09;如…

抽象类是不是必须要有抽象方法

在回答这个问题之前&#xff0c;先来了解一下抽象类。 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的…