nuget 包管理器
nuget 是.Net平台上的包管理器, 对于包的发布(打包 package)和消费(下载依赖管理)都有很好的支持, 本文仅仅关注消费端,
https://www.nuget.org/ 官网
https://nugetmusthaves.com/ 有细分领域的排名
=======================
nuget项目依赖定义格式
=======================
新版 nuget 和VS 2019 都推荐项目依赖采用 PackageReference 格式, 这种格式的依赖声明是放到 .csproj 项目文件中的, 之前是使用 packages.config 文件来保存 nuget 依赖项. PackageReference 相比 packages.config 的优点有:
1. 统一了所有依赖声明存放文件
在原来的方式下, solution 下各个项目之间的依赖是在 .csproj 文件中声明的, nuget 依赖是在 packages.config 中声明的. 现在推荐方式, 统统定义在 .csproj 文件中, 在项目文件中搜索 PackageReference 字样就能看到其依赖关系.
2. 依赖项支持 float 版本写法,
比如项目初始时候, 加入了一个 CsvHelper 11.1 , 我们可以改写版本号为 11.* , 这样在 build或 restore 项目自动会从 nuget feed下载并应用 CsvHelper 11大版下的最新版.
启用 PackageReference 格式的方法是:
1. 针对新项目, 在选项中, 直接设置程序包管理默认的格式为: PackageReference
具体为: 找到NuGet 包管理器/常规页签: 设置程序包管理默认的格式为: PackageReference, 另一个可选格式为 packages.config 文件
2. 针对基于packages.config的老项目: 在VS的资源管理器的 References 节点上, 选择快捷菜单PackageReference….即可转为 PackageReference 格式.
=======================
项目中新增/升级/移除nuget包
=======================
在VS 2019项目文件节点上, 进入 nuget 管理器就能新加/升级/移除 nuget package.
=======================
nuget 环境设置
=======================
参考 https://docs.microsoft.com/zh-cn/nuget/reference/nuget-config-file
1. nuget 环境设置文件名为 NuGet.Config, 有两种级别的 NuGet.Config 文件:
(1). Solution 级别的设置
NuGet.Config 文件要和 solution 文件同目录, 注意不是 .csproj 文件的目录
(2). 操作系统用户级的设置
NuGet.Config 文件是在 %appdata%\NuGet 目录下, 比如:
C:\Users\Administrator\AppData\Roaming\NuGet\NuGet.Config
2. nuget 下载包存放位置
默认情况下, package都是存放到 %userprofile%\.nuget\packages 下, 我们可以通过OS环境变量 NUGET_PACKAGES 来设置新的package 存放路径, 也可以在 NuGet.Config 文件中指定 globalPackagesFolder 属性.
3. 下面是一个 NuGet.Config文件示例, 包含设置多个 packageSources 仓库, 上网代理, 私仓的认证
<config>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="myprivate" value="https://10.10.10.10/packages/" />
</packageSources>
<packageRestore>
<!-- Allow NuGet to download missing packages -->
<add key="enabled" value="True" />
<!-- Automatically check for missing packages during build in Visual Studio -->
<add key="automatic" value="True" />
</packageRestore>
<add key="globalPackagesFolder" value="c:\packages" />
<add key="http_proxy" value="http://company-squid:3128@contoso.com" />
<add key="signatureValidationMode" value="require" />
<packageSourceCredentials>
<myprivate>
<add key="Username" value="user@contoso.com" />
<add key="Password" value="..." />
</myprivate>
</packageSourceCredentials>
</config>
nuget 包管理器的更多相关文章
- nuget包管理器控制台下的powershell脚本介绍
http://personball.com/powershell/2016/07/15/powershell-tips 定制自己的powershell,减少重复工作 安装一系列自己的常用nuget包 ...
- 详解.Net 如何上传自己的包到Nuget平台以及如何使用Nuget包管理器
首先需要一个Nuget账户,可以在官网注册:https://www.nuget.org.已有账户略. 需要一个ApiKeys,登录之后,在我的账户里找到ApiKeys进去; 创建ApiKeys 下载N ...
- [2016-07-15]nuget包管理器控制台下的powershell脚本介绍
博客有阵子没打理了,今天刚恢复样式,但是标题还是不太正常,总算能凑合看看. 回到正题,最近为了能在VS的程序包管理器控制台上能方便的自定义ps脚本去调整project的package,就开始看powe ...
- 华为云提供针对Nuget包管理器的缓存加速服务
在Visual Studio 2013.2015.2017中,使用的是Nuget包管理器对第三方组件进行管理升级的.而且 Nuget 是我们使用.NET Core的一项基础设施,.NET的软件包管理器 ...
- Visual Studio 2013 更新 NuGet 包管理器
Ø 前言 使用 Visual Studio 中的 NuGet 包管理器下载程序时,有时可能出现类似的错误:. 5. 在"联机"选项中搜索"NuGet",选 ...
- 当通过Nuget包管理器获取还原组时,出现 提示 “xxxxx”已拥有为“xxxxx”定义的依赖项
当通过Nuget包管理器获取还原组件时,出现 提示 “xxxxx”已拥有为“xxxxx”定义的依赖项 时 解决方法: 工具---扩展和更新,把Nuget包管理器卸载后,重启VS,再安装,现打开VS项 ...
- .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器
使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言 Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...
- [Visual Studio] 记一次排错:打不开 Nuget 包管理器里的安装package页面,无法 安装 / 恢复 包
出差一阵子PC很久没用了, 回来在用Visual Studio (2017) 的时候, 工程里无法安装Package了 >_< --- 也不知道电脑做了什么?--- Nuget包管 ...
- 使用腾讯云提供的针对Nuget包管理器的缓存加速服务
继阿里巴巴开源镜像站(https://opsx.alibaba.com/).华为云镜像站点(https://mirrors.huaweicloud.com/ )之后,腾讯也已于近日上线了类似的服务,官 ...
随机推荐
- 【一】Gradle 初识
1.Gradle和Maven的对比 gradle 使用groovy语言,可以进行逻辑判断,maven基于xml,无法进行逻辑判断. gradle 可以在一个项目中,根据需求,生成2个不同的jar, m ...
- css权重问题
权重决定了你css规则怎样被浏览器解析直到生效.“css权重关系到你的css规则是怎样显示的 权重记忆口诀.从0开始,一个行内样式+1000,一个id+100,一个属性选择器/class或者伪类+10 ...
- 通过官网模板轻松实现Grafana的可视化界面配置(以MySQL监控项为例)
我们知道可视化是监控的一个重要环节,所以往往我们这个环节花费大量的时间和精力.可是如果可以借鉴前辈的经验和成果,可以事半功倍.Grafana 有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编 ...
- acwing 66. 两个链表的第一个公共结点
地址 https://www.acwing.com/problem/content/description/62/ 输入两个链表,找出它们的第一个公共结点. 当不存在公共节点时,返回空节点. 样例 给 ...
- LeetCode 1244. 力扣排行榜
地址 https://www.acwing.com/solution/LeetCode/content/5765/ 题目描述新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一 ...
- 初学Python:Python的发展历史及下载安装
Python作为一种计算机程序设计语言,自20世纪90年代初诞生至如今被人们逐渐悉知,经过版本更新以及功能添加,已广泛应用于各种独立的.大型项目的开发.Python 已经成为最受欢迎的程序设计语言之一 ...
- MySQL select from where multiple conditions
Maybe one of the most used MySQL commands is SELECT, that is the way to stract the information from ...
- ubuntu升级pip报cannot import name 'main'解决方法
执行sudo vi /usr/bin/pip 将代码: from pip import main if __name__ == '__main__': sys.exit(main()) 修改为: fr ...
- 黄聪:table自适应宽度和高度
自适应宽度: td { width: 1px; white-space: nowrap; /* 自适应宽度*/ word-break: keep-all; /* 避免长单词截断,保持全部 */ } 自 ...
- js获取当前日期,包括星期几
function getCurrentDate() { var myDate = new Date(); var year = myDate.getFullYear(); // ...