VS Nuget的使用实践

目录
  • 一、引言
  • 二、认识Nuget
  • 三、如何使用Nuget
    • 1.常规使用
    • 2.安装类库的历史版本
    • 3.常见问题
    • 4.离线安装nuget包

一、引言

最古老的时候我们想引用一个第三方类库,方法就是先下载第三方的dll文件,然后放置到我们的项目中,然后添加引用来引用这些dll,这种方法有各种的不便,比如引用dll的版本不一致,或者dll忘记放到项目目录提交等等,使用过老版本VS的应该都深有体会,nuget就是为了解决类库引用的痛楚而出现的。

二、认识Nuget

Nuget是一个VS的扩展插件。我们在使用VS开发时,Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。

我们可以通过VS菜单上的“工具→扩展和更新”来查看Nuget

三、如何使用Nuget

1.常规使用

在解决方案管理器中,我们可以通过“右键子项目→管理Nuget程序包”或“右键子项目下的引用→管理Nuget程序包”来对该子项目的引用进行管理

在打开的“管理Nuget程序包”窗口中我们可以对该子项目引用的类库进行管理

2.安装类库的历史版本

nuget中搜索到的,一般都是该类库最新版本的,在使用过程中,我们可能需要去下载类库的历史版本,打开nuget官网:

https://www.nuget.org/

输入要安装的类库关键词,比如我要安装EF的6.0.2版本,直接搜索EF即可

第一个即我们想要的,点击进入详情

这里我们能看到该类库对其他类库是否有依赖,以及类库的各个历史版本。安装类库的历史版本就需要用到“程序包管理控制台”了,可以从菜单“工具→Nuget包管理器→程序包管理控制台”打开

偶尔有碰到程序包管理控制台打开失败的情况,现象是打开了这个窗口,但是里边是一片空白,后来查询了下资料VS的Nuget包管理器是依赖于Windows操作系统的PowerShell的,从开始菜单打开一次PowerShell,然后在VS里重新打开程序包管理控制台问题就解决了。

接下来比如我们要安装EF的6.0.2版本,在nuget官网上从EF的历史版本中找到6.0.2,点进去就可以看到安装命令

确保你要安装的子项目没选错,然后将命令粘贴到这里回车执行,没有错误提示就说明安装成功了。

3.常见问题

Nuget安装时会自动下载类库相关dll,存放路径为解决方案目录下package文件夹,因为package文件会比较大,实际开发中一般不会随源码一块提交到svn或者git,所以从svn或者git拉取源码以后,第一次生成时Nuget会自动还原项目中引用的类库。偶有还原失败的情况,可以手动还原重试,方法是:右键解决方案→启用Nuget程序包还原

如果Nuget包还原失败或者无法搜索在线类库,请检查Nuget源是否可用,可以尝试配置DNS为百度开放DNS:180.76.76.76,或者114.114.114.114,以及检查自己电脑否使用了Http代理,浏览器翻(科)墙(学)插件,VPN等,如果有代理可以关闭/停用了代理以后重试。

Nuget还原实际使用中还碰到了部分解决方案包还原失败的情况,即还原成功以后,在“解决方案管理器”中展开子项目的“引用文件夹”有黄色叹号出现,此时可以在程序包管理控制台中使用如下命令重新安装改子项目的包:

Update-Package -reinstall -ProjectName 项目名称

如,重新安装Model项目的包:

Update-Package -reinstall -ProjectName BookShop.Model

命令:Update-Package -reinstall可以重新安装解决方案下的所有包,但是这里不建议使用,因为被坑过一次,重新安装解决方案的所有包耗时非常长,也没有执行的必要性。

在实际使用中,如果我们要搭建2个框架相似的项目,假设其中一个已经搭建好了,那么另外一个项目就不需要用nuget管理器界面再重新把所有的引用再次搜索添加一遍了,只需要把对应子项目下的packages.config文件复制过来,执行nuget还原命令即可。

部分类库的nuget包的安装以后不会在项目引用目录下自动添加对相应dll的引用,比如mysql相关的MySql.Data、MySql.Data.Entity,此时手动添加引用即可(右键解决方案→添加引用→程序集→扩展中找到添加即可)

4.离线安装nuget包

在某些环境下我们可能需要离线安装nuget包(比如开发用的电脑无法直接联网)。

首先,我们需要去nuget官网下载好需要安装的nuget包(即.nupkg后缀的文件,需要注意的是离线安装模式依赖项需要手动下载安装)

其次,添加nuget离线源,通过菜单“工具→Nuget包管理器→程序包管理器设置”打开nuget包管理器配置。

点击右上角的添加按钮,填写自定义的源名称和地址路径,可以配置任意的文件夹,将下载好的.nupkg包文件放入该文件夹即可。

然后我们在nuget包管理器中源选择我们创建的离线源就可以看到我们刚才放进去的离线包了

接下来安装即可,需要注意的是离线安装可能会提示依赖问题,需要手动安装依赖后才能安装成功

到此这篇关于VS Nuget的使用实践的文章就介绍到这了,更多相关VS Nuget使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • VS2019 Nuget找不到包的问题处理

    VS不记得改了什么设置之后,发现找不到EF 解决办法 1.点击右侧的设置按钮 2.弹出窗中左侧树形结构选择"程序包源",再点击右上方的添加按钮 输入一下信息:https://www.nuget.org/api/v2/ 然后点击更新,确定按钮. 再次搜索就可找到EF安装包. vs2019中NuGet控制台的常用命令 Db first,(远程)数据库表同步到项目: Scaffold-DbContext "Data Source=(DESCRIPTION=(ADDRESS=(PRO

  • 10分钟学会VS NuGet包私有化部署

    目录 前言 什么是BaGet 搭建私有化BaGet服务器 使用私有化程序包 前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#) web版本(推荐):小白2分钟学会Visual Studio将引用包打包到NuGet上 其实官方也提供了私有化部署(NuGet.Server.ProGet.MyGe等),我们就来基于BaGet进

  • 在VS2009中集成自动上传nuget包到服务器的解决方案

    前言: 我们在项目最初开发的过程中,由于各个组之间负责开发的模块并不是单一的功能项,不管是与后台还是与前端之间的接口对接联调.难免会不停的打包发布自己负责模块的nuget包到服务器,供其他组的开发人员进行接口调用.这就无形中,给我们本身除了开发之外,增添了一些额外的工作量.因此,为了简化我们的工作内容,我们将打包上传nuget包的功能,直接继承到我们自己的vs解决方案中,这样就省去了手工上传的麻烦. 开始: 1.首先,右键点击我们已经写好的nuget项目,然后选择"属性",进入如下图:

  • ASP.NET MVC学习之NuGet在VS中的运用浅谈

    为什么要使用NuGet 简单的说NuGet可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery.Newtonsoft.Json.log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用,方便至极.当然网上一些我们常用的类库更新频率不是很高而且即便出了新版本我们也没必要总是保持最新,故这点对我们的帮助比较有限,个人认为N

  • VS2019 找不到资产文件 “xxxx\obj\project.assets.json”运行NuGet包还原以生成此文件(解决方案)

    在VS2019创建了项目,但生成解决方案时报错: 错误 NETSDK1004 找不到资产文件"H:\VSworkspace\1020占位符\obj\project.assets.json".运行 NuGet 包还原以生成此文件. 1020占位符 C:\Program Files\dotnet\sdk\3.1.301\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets    234 1.

  • VS Nuget的使用实践

    目录 一.引言 二.认识Nuget 三.如何使用Nuget 1.常规使用 2.安装类库的历史版本 3.常见问题 4.离线安装nuget包 一.引言 最古老的时候我们想引用一个第三方类库,方法就是先下载第三方的dll文件,然后放置到我们的项目中,然后添加引用来引用这些dll,这种方法有各种的不便,比如引用dll的版本不一致,或者dll忘记放到项目目录提交等等,使用过老版本VS的应该都深有体会,nuget就是为了解决类库引用的痛楚而出现的. 二.认识Nuget Nuget是一个VS的扩展插件.我们在

  • JWT.net 操作实践方法

    1.JWT定义 JWT(Json Web Token)是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准( RFC 7519 ),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息.因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名. 2.JWT的组成部分 (1)JWT一般由三段构成,用.号分隔开,第一段是header,第二段是payload,第三段是signature, 例如:

  • .NET+PostgreSQL实践与避坑指南(推荐)

    简介 .NET+PostgreSQL(简称PG)这个组合我已经用了蛮长的一段时间,感觉还是挺不错的.不过大多数人说起.NET平台,还是会想起跟它"原汁原味"配套的Microsoft SQL Server(简称MSSQL),其实没有MSSQL也没有任何问题,甚至没有Windows Server都没问题,谁说用.NET就一定要上微软全家桶?这都什么年代了-- PG和MSSQL的具体比较我就不详细展开了,自行搜一下,这种比较分析文章很多.应该说两个RDBMS各有特色,MSSQL工具集庞大(大

  • .NET Core(.NET6)中gRPC使用实践

    目录 一.简介 二.创建gRPC服务端 1.创建gRPC项目 2.编写自己的服务 三.创建gRPC客户端 1.创建客户端项目 2.grPC服务https的调用 3.gRPC内网http调用 4.IOC注入的方式调用gRPC 四.webapi中加入gRPC 一.简介 简单解析一下gRPC,gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架. 特点: 跨语言 内容protobuf格式(比json体积小),网络传输快 使用HTTP/2进行传输 适合高性能轻量的微服务,一

  • C# PDF转图片(JPG,Png)的项目实践

    目录 第一步:用nuget安装两个包: 第二步:附上如下代码: 背景:最近需要做一个任务:C# PDF文件需要传输为JPG图片.一开始没有头绪,最后去github找到了现在我用的PdfiumViewer组件(免费)实现了功能. 现在分享一下: [项目框架是:.NET FrameWork 4.6.1 版本] 第一步:用nuget安装两个包: PdfiumViewer PdfiumViewer.Native.x86.v8-xfa(注意不是64位版的) 注:该2个包没有版本要求,本次测试使用包版本如下

  • AngularJS实践之使用NgModelController进行数据绑定

    前言 在Angular应用中,ng-model指令时不可缺少的一个部分,它用来将视图绑定到数据,是双向绑定魔法中重要的一环.ngModelController则是ng-model指令中所定义的controller.这个controller包含了一些用于数据绑定,验证,CSS更新,以及数值格式化和解析的服务.它不用来进行DOM渲染或者监听DOM事件.与DOM相关的逻辑都应该包含在其他的指令中,然后让这些指令来试用ngModelController中的数据绑定功能. 注意:本篇文章不是对NgMode

  • AngularJS 中的指令实践开发指南(一)

    指令(Directives)是所有AngularJS应用最重要的部分.尽管AngularJS已经提供了非常丰富的指令,但还是经常需要创建应用特定的指令.这篇教程会为你讲述如何自定义指令,以及介绍如何在实际项目中使用.在这篇文章的最后(第二部分),我会指导你如何使用Angular指令来创建一个简单的记事本应用. 概述 一个指令用来引入新的HTML语法.指令是DOM元素上的标记,使元素拥有特定的行为.举例来说,静态的HTML不知道如何来创建和展现一个日期选择器控件.让HTML能识别这个语法,我们需要

  • 最佳的JavaScript错误处理实践

    不管你的技术水平如何,错误或异常是应用程序开发者生活的一部分.Web开发的不连贯性留下了许多错误能够发生并确实已经发生的地方.解决的关键在于处理任何不可预见的(或可预见的错误),来控制用户的体验.利用JavaScript,就有多种技术和语言特色可以用来正确地解决任何问题. 在 JavaScript 中处理错误很危险.如果你相信墨菲定律,会出错的终究会出错!在这篇文章中,我会深入研究 JavaScript 中的错误处理.我会涉及到一些陷阱和好的实践.最后我们会讨论异步代码处理和 Ajax. 我认为

  • Vue全家桶实践项目总结(推荐)

    从前端的角度看,Vue可以说是目前最理想的前端MVVM框架,一切为界面服务,上手难度低,本文就将记录使用Vue全家桶(Vue+Vue-router+Vuex)重构一个jQuery+template项目的过程,以及期间的收获. 入门 Vue的官方文档就是学习Vue的最佳教程,没有之一,可能因为框架作者是设计出身,没有后端背景,因此各种抽象概念在Vue里都得以用最容易理解的方式被恰到好处的阐述,这里只简单介绍Vue.Vue-router.Vuex的概念,要全面学习建议去官方文档. Vue Vue的核

  • HTML结构化:实践DIV+CSS网页布局入门指南

    你正在学习CSS布局吗?是不是还不能完全掌握纯CSS布局?通常有两种情况阻碍你的学习: 第一种可能是你还没有理解CSS处理页面的原理.在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构,然后再针对语义.结构添加CSS.这篇文章将告诉你应该怎样把HTML结构化. 另一种原因是你对那些非常熟悉的表现层属性(例如:cellpadding,.hspace.align="left"等等)束手无策,不知道该转换成对 应的什么CSS语句. 当你解决了第一种问题,知道了如何结构化你的HTML

随机推荐