Fork me on GitHub

【ASP.NET MVC系列】浅谈NuGet在VS中的运用

ASP.NET MVC系列文章

【01】浅谈Google Chrome浏览器(理论篇)

【02】浅谈Google Chrome浏览器(操作篇)(上)

【03】浅谈Google Chrome浏览器(操作篇)(下)

【04】浅谈ASP.NET框架   

【05】浅谈ASP.NET MVC运行过程    

【06】浅谈ASP.NET MVC 控制器   

【07】浅谈ASP.NET MVC 路由   

【08】浅谈ASP.NET MVC 视图 

【09】浅谈ASP.NET MVC 视图与控制器传递数据

【10】浅谈jqGrid 在ASP.NET MVC中增删改查     

【11】浅谈ASP.NET 页面之间传值的几种方式

【12】浅谈缓存技术在ASP.NET中的运用       

【13】浅谈NuGet在VS中的运用      

【14】浅谈ASP.NET 程序发布过程           

【15】浅谈数据注解和验证           

【16】浅谈依赖注入

【17】浅谈表单和HTML辅助方法

【18】浅谈基于APS.NET身份验证

【19】浅谈ASP.NET MVC 模型

【20】浅谈ASP.NET MVC 单元测试

【21】浅谈ASP.NET MVC网络安全;

【22】浅谈ASP.NET MVC八大类扩展

【23】再谈ASP.NET MVC Routing

【24】浅谈ASP.NET 高级话题

【25】浅谈大型ASP.NET MVC项目(含DEMO)

【26】下一系列:ASP.NET WebAPI


 

 一     概述

在我们讲解NuGet前,我们先来看看一个例子。

1.例子:

 假设现在开发一套系统,其中前端框架我们选择Bootstrap,由于选择Bootstrap作为前端框架,因此,在项目中,我们需要引入Bootstrap相关文件,大致会执行如下操作。

步骤一:下载Bootstrap文件

输入Bootstrap官网域名   http://v3.bootcss.com/

 输入域名,进入官网

步骤二:选择合适的版本,下载Bootstrap包

步骤三:将包引入到项目中

 

关于将Bootstrap包引入到Project中,过程似乎比较麻烦,更可怕的的是,当在项目中的Bootstrap包需要更新时,需要做重复的工作,这是非常繁琐的,很好的是,VS自带的NuGet包管理器很好地

帮助我们解决了此类问题。

2.何为Nuget包管理器?

对于.NET和VS而言,NuGet是一个.NET包管理系统,它可以很容易地响应运用程序中添加、更新和删除外部库文件及其依赖。

除此之外,我们可以通过创建包,发布包实现包之间的共享,使共享得以实现。

站在微软的角度:要尽可能地尝试,不要指望Microsoft为我们提供所需要的每一段代码,在.NET平台上进行开发的开发人员多大数百万甚至上千万,而每一个开发人员都有其独特的技术和有待解决

的问题,等待Microsoft去解决每个开发人员的每个问题,既形不成规模,也没有意义。值得庆幸的是,他们可以通过网上发布的一些库莱解决他们或他们客户遇到的问题。然而,面对网上的这些有

用的库我们面临三大挑战:发现,安装和维护。但庆幸的是,NuGet却很好地解决了此类问题。

二    将包添加到库

将包添加到库,有许多方式,常用方式为Manage NuGet Package 和 Package Manager Console,下面将结合VS2017和基于ASP.NET MVC模板讲解该两种方式。

(一)Manage  NuGet  Packages

1.准备好VS2017开发环境,并用VS的MVC模板创建一个默认项目:NuGetDemo

分析:

细心的你会发现,在上图中出项了packages.config文件,其实,它就是NuGet包的配置文件,因为我们在选择基于MVC模板创建项目时,默认的引入了第三方库文件,如Bootstrap,Jquery等;

2.打开NuGet包管理器

引用=>管理Nuget程序包

 

3.打开NuGet包管理器后,我们可执行如下操作

(1)浏览包  (2)查看当前系统已安装包  (3)更新包  (4)在搜索框中搜索包

4.查看包的详细信息

我们以log4net为例

分析:

包的基本信息

 5.安装

在安装AnyLog.Log4Net之前,先选择好安装版本,然后再安装。

6.查看安装情况

(1)查看控制台输出安装信息情况 

 (2)查看NuGet包已安装情况

(3)查看项目引用情况

(4)查看packages.config文件

7.更新包

NuGet包管理器不仅能帮助我们安装包,而且还能帮助我们维护包,我们可以借助NuGet包管理器来更新包。

注意:当我们更新包时,这个操作也会更新该包的所以依赖,以确保只安装依赖的兼容保本。

在以下例子中,我们在项目NuGet中安装了Log4net  2.0.3版本,现在,我们将其更新都最新版本2.0.8,选择“更新”。

点击确认。

注意,此步会更新运用程序中与Log4net相关所有内容。

查看更新结果

 

 8.包恢复

NuGet默认的工作流程是把包文件夹提交到版本控制,这样做的一个好处是可从版本控制检索解决方案,以确保构建解决方案的每个包都能够安装,而且这些包还不需要从其他位置检索。

但是,这样做也是有弊端的,Packages文件夹不是VS解决方案的一部分,因此,通过VS集成管理版本控制的开发人员需要进行一个额外的步骤以确保Packages文件夹能够提交。

(1)TFS可以自动提交Packages文件夹

(2)分布式版本控制系统(如Git),不建议把Packages文件夹提交到版本控制,因为分布式版本控制系统不擅长处理二进制文件,如果项目中大量的包都有变化,分布式版本控制系统库就会

变得很庞大。

可喜的是,NuGet 1.6引入的包修复功能来处理这些问题,这样就支持一个新的个工作流程,我们就不需要把Packages文件夹提交到源代码控制了。

这个过程需要手动执行几个步骤:对每个项目都需要执行单独的一步操作,以启用包恢复(在NuGet2.0~2.6中,每个开发人员还需要配置VS来允许包恢复)

注意:

         现在NuGet包恢复时自动启用的,但是在VS的Package Manager设置中使用下面两个选项,可以禁用包恢复功能:

          a.允许NuGet下载缺少包;

          b.在VS中构建运用程序时,自动检查缺少的包;

通过NuGet 2.7 自动包恢复功能。

(二)Package Manager Console

Package Manager Console是Visual Studio 中基于PowerShell的控制台,不仅提供了强大的功能来查找和安装包,而且还支持Manager NuGet Packages对话框不支持的一些功能。

1.启动控制台

工具=>NuGet包管理器=>程序包管理器控制台

2.查看当前项目已安装的包

在控制台中输入Get--Package,可以查看当前项目已安装的包

拓展:

(1)以前版本,可以通过以下命令来过滤包

Get-Package -ListAvailable -Filter Route

(2)可以采用如下命令代替Get-Package -ListAvailable -Filter 命令

Find-Package [-Id]

 

3.安装包

在控制台中通过:Install-Package 包名  

下图中,我们在项目中安装Log4net,因此输入Install-Package Log4net,由于我已在项目中安装了Log4net,因此提示已经安装。

拓展:

(1)PowerShell命令的支持扩展功能,相当于智能感应。输入命令部分字符,按Tab键就可以查看输入的内容,从而实现智能感应。

(2) PowerShell支持复合命令,比如通过将一个命令管道传输到另一个命令。

如下命令向解决方案中每一个项目安装一个包。

Get-Project -ALL | Install-Package  log4net

(3)PowerShell也支持动态添加新命令

PowerShell强大之处在于,安装的一些包可以为shell添加新命令。

(三)其他方式启动NuGet

 如在项目名称中添加,这里不论述,核心内容还是在如上的(一)和(二)部分。

 4.关于包源和项目的选择

 通过选择程序包源右边的齿轮,即可查看该包及对包的基本操作

5.NuGet包管理器概述

(1)NuGe包管理器基本界面

在控制台操作中,由两大部分组成:常规和程序包源

(2)程序包源概述

拓展:

在Manage  NuGet  Packages 操作包方式中,与如上对应的操作

例子讲解:

下面我们讲解基于如上两种模式添加autofac包的操作过程

Manage  NuGet  Packages 方式

控制台操作方式

(1)找到autofac包的NuGet地址

(2)添加autofac包

三    创建包

篇幅有限,以后专门写一篇文章概述......

四    发布包

篇幅有限,以后专门写一篇文章概述......

五    参考文献

【01】ASP.NET MVC5 高级编程(Jon Galloway,Brad Wilson,K.Scott Allen,David Matson ,孙远帅 译)

六   版权区

  • 感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同进步。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 极少部分文章利用读书、参考、引用、抄袭、复制和粘贴等多种方式整合而成的,大部分为原创。
  • 如您喜欢,麻烦推荐一下;如您有新想法,欢迎提出,邮箱:2016177728@qq.com。
  • 可以转载该博客,但必须著名博客来源。
posted @ 2018-01-03 00:57  Alan_beijing  阅读(5601)  评论(19编辑  收藏  举报