Nuget,程序员的功能包
导读:随着信息技术的发展,资源的共享已经成为一种文化。对于程序设计来说,我们在编写软件的时候,总有那么一些公共使用的东西,或者说需啊哟使用到别人可能已经做得很好的东西。这个时候,再去重写,并不是一个明智的选择。那么,全世界的程序员,怎么共享他们的成果呢?Nuget!
一、是什么?
NuGet :是一种 Visual Studio 扩展,它能够简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)的操作。 NuGet 程序包是打包成一个文件的文件集,扩展名是 . nupkg,使用开放打包约定 (OPC) 格式。
二、从哪儿来?
2.1,Nuget的来源
可以说,任何东西都有一个从无到有的过程,那么,Nuget包也不是从软件事业开始就有的东西。为了介绍Nuget包的来历,下面举一个例子:
当我们想要引用别人写好的资源时,一般是什么流程?从我个人来说,是这样的一条生产线:
搜索资料——挑选资料——下载——解压——校验是否有用——放置到解决方案的合理位置——添加引用——配置文件,然后完成这一系列的工作后,当我们需要更新时怎么办?改代码——生成——引用——集成。如果你是一个特别精细的人,或者说时间特别多,脑袋特别够使,那么,这一系列的工作对你来说,可能还不是太过繁琐和复杂。可是,对于我来说,这就会严重影响到我的效率。
有没有一种办法,可以帮我快速的实现引用代码库和更新引用呢?Nuget,应运而生!
2.2,Nuget程序包的来源
我们可以从Nuget程序包中拿出东西来进行使用,那么,Nuget包里面的东西是怎么放进去的呢?
一般情况,创建自己的程序包,有以下几个步骤:
1,创建一个类库项目。
2,从项目生成 NuSpec 清单。
前提:下载一个NuGet.exe,并将它放到和.csproj文件在同一目录下.下载地址:http://nuget.codeplex.com/downloads/get/669083
如果要将自己的类库生成NuSpec清单,首先得注册Nuget账号。注册地址:https://www.nuget.org/ ,注册完成后,会获得一个APIKey。然后,使用VS2012开发人员命令提示设置Nuget
apikey:Nuget setAPIKey(此处输入注册后取得的APIKey)。注意:是在自己的项目路径下设置。
设置好了APIKey之后,紧接着输入命令:Nuget spec。然后会在项目的文件夹下,有一个新的文件产生:
到此,从项目生成 NuSpec 清单完成!
3,更新项目的程序集元数据。
打开nuspec文件,根据自己的需要,修改其中的某些值,如:版本信息,创建人等。没用的可以删掉.$$之间的可以不用管,会自动引用AssemblyInfo.cs中的设置值。
4,使用 NuGet.exe 创建程序包。
Nuget pack Angel.csproj。成功后生成.nupkg文件,如我这里生成了Angel.1.0.0.0.nupkg。如:
三、怎样使用?
3.1,安装
使用Nuget包,首先需要确认已经安装上了Nuget包。如果已经安装了 ASP.NET MVC 3,则已经安装 NuGet。 ASP.NET MVC 3 包含 NuGet。如果没有,则需要进行:工具——扩展和更新——联机——Nuget packages manager——下载安装。
3.2,引用
当Nuget包安装好了之后,就是对他的引用:引用——管理Nuget程序包——搜索需要的程序包——下载安装——引用
以log4net为例:下载安装
当安装完成,则会在引用中出现:
3.3,更新
当我们引用的程序包邮新版本时,如果有必要更新,那么我们可以依照安装的步骤进行,当我们已经安装了程序包,再启动其对话框,就可以看见其更新标识,点击更新即可更新程序包。
四、总结
整体上看来,Nuget包就是一个打包封装和复用的过程,以前是一直都不明白这个Nuget包是怎么引用的,包括目前的项目中,就引用了上次大家做过的项目的一个类库,但是都不知道那是什么东西,为什么要引用,现在知道了。知识是一点一点涨的,多学点多见识点!
Nuget,程序员的功能包的更多相关文章
- vim程序员加强功能
1.折叠 1.1折叠的方式有六种 manual:以标准的vim结构定义折叠跨越的范围,类似移动命令 indent:折叠与折叠的层次,对应于文本的缩排与 ...
- php程序员的弱点
今天在在知乎上看到一个问题,题目是<看了laravel的php框架怎么感觉很不靠谱?>,我最近也在想学习一下laravel,laravel听说是受到很大ruby on rails的影响. ...
- freecplus框架,Linux平台下C/C++程序员提高开发效率的利器
目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参数文 ...
- 来自Java程序员的Python新手入门小结
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 程序员 vs HR(皮这么一下很开心)
最近网络上一段 HR VS 程序员 的表情包火了 来来来 我们近距离感受下 来源|网络:http://t.cn/RuTKC8B 哈哈哈!大家可以留言说说你们面试时候的趣事 更多内容关注公众号:51re ...
- 转一篇dudu大人的文章:程序员,用NuGet管理好你的包包
每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”.这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的. 包包有个特点:容易坏,更新快, ...
- 程序员,用NuGet管理好你的包包(转)
每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”.这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的. 包包有个特点:容易坏,更新快, ...
- Nuget程序包 使用log4net
Nuget程序包不用细介绍,网上资源很多,有个项目使用了log4net,为项目打log,功能很多,足够一般使用. 使用时候需要在配置文件中对其进行相关配置,我自己的配置文件放在App.config文件 ...
- ORM之PetaPoco错误--VS中NUGet程序包管理安装PetaPoco
一般在Vs中使用PetaPoco的时候都是使用NuGet程序包管理来安装PetaPoco的,如果你在安装PetaPoco前设置了ConnectionString,那么PetaPoco中的T4模板会自动 ...
随机推荐
- angularjs 下select中ng-options使用
当我有一堆object数据要用下拉框进行显示选择时,可以使用到angularjs中的select中的ng-options的属性.官网网址:https://docs.angularjs.org/api/ ...
- logging模块进阶2
1.两种级别设置: 全局级别:生成logger对象后设置的级别 局部级别:生成handler对象设置的级别 我们都知道输出的级别不能低于设定的级别,那么全局级别和局部级别哪一个对输出产生影响? 经过多 ...
- 微信小程序组件解读和分析:一、view(视图容器 )
view组件说明: 视图容器 跟HTML代码中的DIV一样,可以包裹其他的组件,也可以被包裹在其他的组件内部.用起来比较自由随意,没有固定的结构. view组件的用法: 示例项目的wxml ...
- The Performance Manifesto
Manifesto For Performance Testing And Engineering We choose to support others in their quest for bet ...
- Linux系统下查找文件的方法
Linux系统下查找文件的方法 作者:Vashon 时间:20150419 方法一.在当前目录里查找所有名为以 java 开头的文件: find ./ -name "java*" ...
- centos开机直接进入命令行
找到文件,/etc/inittab 文件,在下面有一行 id:5:initdefault: 将上面的5改成3就可以了 5是图形界面 3是命令行界面 就是文本界面.
- 51nod 1432 独木舟
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 n个人,已知每个人体重.独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承 ...
- JavaFX Chart设置数值显示
一.XYChart import javafx.application.Application;import javafx.geometry.NodeOrientation;import javafx ...
- Python打包成exe,pyc
D:\mypython\path\ C:\Python27\Scripts\pyinstaller.exe -w mypython.py # Python打包成exe D:\mypython\path ...
- eclipse修改SVN账号密码
首先,eclipse中打开window------>preferences------->SVN页面,如下所示: 注意我圈起来的地方,JavaHL是不可用的,因此SVN接口应该是SVNKi ...