10分钟进阶Nuget
nuget是什么
.net版的maven(java)? 如果你用过windows的chocolatey,mac的homebrew或许更容易理解他,先来回顾下以前我们是如何处理或者碰到过的问题。
1.假如我需要合并2个项目,这2个项目是不同的作者,项目中都使用到了log4net并且版本不同,那么你需要做一系列的改动来保证配置文件的正常工作。
2.同样在团队合作中,随便使用某个源代码管理工具,一般每个人在本地都有一个工程副本,对于第三方的(或者公用的)程序集(例如Common,Utility等)引用或许大家会指定一个相对的路径。但是对于一次版本更新维护成本,或许也能接受。
3.项目依赖问题,如果组件A依赖组件B,组件B关联组件C... 如果工程不是自己从头开始掌控或者直接就是修改前任的代码,某些组件莫名丢了或者其中的一个版本升级了....
4.在.net工程中添加js或者程序集有时候所需要的安装工作可能不仅仅是copy一个js或者js,还需要关联的js,css,jpg,config有的甚至要添加module和handler,在人为的操作和确认过程中难免会遇到一些磕磕绊绊。
所以nuget诞生了
nuget能做什么
NuGet 是一种 Visual Studio 扩展,它能够简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)的操作。 NuGet 程序包是打包成一个文件的文件集,扩展名是 . nupkg,使用开放打包约定 (OPC) 格式。解决上述的问题,nuget对于版本的更新迭代,程序集的共享,管理都有着巨大的作用,如果你还在徒手添加程序库,你,out了!
安装,引用,卸载,更新
最简单的方法是从“Tools”(工具)|“Extension Manager”(vs2013中是Extensions and Updates)菜单选项启动 Visual Studio Extension Manager。单击“Online Gallery”(联机库)选项卡查看可用的 Visual Studio 扩展名

需要引用库的时候,只要筛选出库的名称然后点安装,会提示你选择需要安装的项目

卸载同样简单,在已安装中选中需要卸载的库点击管理,去掉已安装项目的勾选即成。

如果要更新到最新版本,在扩展包管理器窗口中有需要更新的一览列表

如果要更新到指定版本,需要多一些其他的操作,首先找到nuget的官方网站http://www.nuget.org/,筛选出要安装的库

这里我们选择log4net

历史版本变全在这里了。
回到Visual Studio从tools中打开包管理器

键入指定的版本号,注意要安装的默认项目

至此,对nuget应该已经有了初步的了解
下面我们来看下如何管理本地的包
首先从tools|Options中选中包管理,除了第一个官方源以外下面都是可以自定义的。如果是团队项目还可以指向一个共享目录。

那么如何制作我们本地的包呢,首先你要准备nuget package explorer

拖入你要管理或者共享的库
、
保存成.nupkg即可。另外引用nuget管理的工程在根目录下都会存在一份配置文件packages.config,里面可以看出所引用的包的信息以及版本。

还有一种特殊的情况就是假如你做开源项目的扩展,例如umbraco,它们有时候会引用一些更改过的无签名或者公钥的组件。这个时候如果你从官方源中引用对应的组件会导致冲突。

这里使用ildasm来查看下区别


对于这种情况,解决办法之一就是建立一个适配器一样的中间件,也就是用本地包包含一个对应的无公钥的库。

最近会更新一些过程改进的内容,希望对大家有帮助。
感谢作者共享:http://www.cnblogs.com/dubing/p/3630434.html
10分钟进阶Nuget的更多相关文章
- 【过程改进】10分钟进阶Nuget
目录 nuget初识 nuget本地包 nuget解决依赖冲突 nuget是什么 .net版的maven(java)? 如果你用过windows的chocolatey,mac的homebrew或许更容 ...
- 10分钟进阶SpringBoot - 05. 数据访问之JDBC(附加源码分析+代码下载)
10分钟进阶SpringBoot - 05. 数据访问之JDBC 代码下载:https://github.com/Jackson0714/study-spring-boot.git 一.JDBC是什么 ...
- 10分钟学会VS NuGet包私有化部署
前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(ne ...
- C# 10分钟完成百度语音技术(语音识别与合成)——入门篇
我们已经讲了人脸识别(入门+进阶).图片识别(入门).下面是链接: C# 10分钟完成百度人脸识别——入门篇 C# 30分钟完成百度人脸识别——进阶篇(文末附源码) C# 10分钟完成百度图片提取文字 ...
- JavaScript 10分钟入门
JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...
- Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库
前言 在 .Net Core 2.2中 Microsoft.AspNetCore.App 默认内置了EntityFramework Core 包,所以在使用过程中,我们无需再从 NuGet 仓 ...
- 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange
如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...
- 在net中json序列化与反序列化 面向对象六大原则 (第一篇) 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变
在net中json序列化与反序列化 准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...
- C# 10分钟完成百度图片提取文字(文字识别)——入门篇
现在图片文字识别已经很成熟了,比如qq长按图片,点击图片识别就可以识别图片的文字,将不认识的.文字数量大的.或者不能赋值的值进行二次可复制功能. 我们现在就基于百度Ai开放平台进行个人文字识别,dem ...
随机推荐
- Android多语言支持以及各国语言Values文件夹命名规则
创建好的项目工程由于需求 需要做多国语言的支持 下面介绍怎么快捷的创建文件夹 建好一个android 的项目后,默认的res下面 有layout.values.drawable等目录 这些都是程序默 ...
- Android-怎样用命令行进行打包
转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/40978859 1.生成R文件 aapt package -f -m -J . ...
- WPF 多线程
写法3 private void button1_Click(object sender, RoutedEventArgs e) { System. ...
- JS问题Uncaught ReferenceError:XXXX is not defined
背景: html中一个table,table中进行分页.每行后面有一系列操作,如删除,修改.现在以删除为例说明问题. 实现方式: 使用button,在onclick中调用js函数,js函数中传递参数如 ...
- 局域网动态ip
1. 局域网IP对网速没有任何影响.点“开始”“设置”进入“网络连接” 右击“本地连接”选择“属性”选中“Internet协议(TCP/IP)” 在下面的一些按钮中点“属性”,之后你可以设置局域网IP ...
- log4j中存在日志无法打印问题解决
我在项目中配置双数据中心,原来类包名称前最都是一致的,后来由于项目的需要根据数据来源命名不同的类包名称,这个导致一个问题,sql语句运行无法正常打印出来,提示以下内容: log4j:WARN No a ...
- 在iframe中获取父页面的元素
a.html <!DOCTYPE html> <html> <head> <title></title> </head> < ...
- js相差天数计算
dueDate = new Date(row.dueDate.replace(/-/g,'/')); if(dueDate<systemDate){ ...
- 制作win7+ubuntu +winPE+CDlinux多系统启动U盘
制作前期准备工作 1.需要软件 grub4dos(http://sourceforge.net/projects/grub4dos/files/) UltraISO(http://cn.ezbsyst ...
- 企业级应用框架(五)IOC容器在框架中的应用
前言 在上一篇我大致的介绍了这个系列所涉及到的知识点,在本篇我打算把IOC这一块单独提取出来讲,因为IOC容器在解除框架层与层之间的耦合有着不可磨灭的作用.当然在本系列前面的三篇中我也提供了一种基于反 ...