Nuget快捷实践

简介

本文主要包含三个部分,即创建nuget包、上传nuget包和删除nuget包。旨在引导快速使用nuget打包和使用,并实现对于nuget的简单管理。

本文使用的nuget服务是基于自行搭建的nuget server v3.0.0.0。具体搭建方法可以参考nuget官方的指导教程。

另外文章中还涉及到两个程序:

  • Nuget Package Explorer:v4.1.38
  • nuget.exe:v4.5.1.4879

本文阅读时间大约为十分钟。

创建nuget包

对于nuget的打包方式的权威指南当然是nuget官方的指导文档。这份文档优点是对于nuget包的结构讲解的很清楚,缺点是不太符合本文的快速实践的意图。针对这个情况也有解决办法,万能的网友们开发了Nuget Package Explorer,目前该项目托管在Github上,安装了Win10系统的可以直接到微软应用商店下载。

打开Nuget Package Explorer后选择新建package,在新建界面中填写必要信息。包括包的Id,版本号,作者,发布说明等。

以上图为例,在新建nuget包时重点填写如下信息:

  • Id:包的唯一标识,本文以Company.Application.Model.Lib为例
  • Version:当前发布的类库版本号,本文以1.0.0为例
  • Title:类库名称
  • Authors:作者
  • Owners:所有者
  • Description:类库描述
  • Release Notes:当前版本的发布说明

如果需要添加dll文件,则在右侧的Package Contents空白区域右键,在菜单中选择Add Lib Folder,并在新出现的lib上右键,在菜单中选择“Add Existing File...”。操作界面参考下图。

创建有依赖的nuget包

如果编译类库时如果有的dll是别的nuget包的,最好是将被依赖的nuget包添加到当前nuget包的依赖项中。否则用户同时下载两个类库时,可能出现相同的dll文件被覆盖的情况,以至于难于控制dll的版本,而且容易出现编译问题。

那么如何添加依赖项呢?参考下图的步骤:

在填写类库信息的Package Metadata页最下方有个按钮,点击后弹出相关的编辑页面。下图以标注的形式说明操作顺序:

  1. 点击Edit Dependencies按钮弹出依赖项编辑页面
  2. 点击Groups旁边的加号按钮,Tip是Add a new group,不要编辑Target Framework编辑框
  3. 点击依赖项编辑页面下方的小手图标的按钮,Tip是Select dependency from nuget feed
  4. 在弹出的Select package页面选择相关的依赖项并双击,完成选择
  5. 使用自己搭建的nuget站点时,Select package页面的Package Source可能是http://域名:端口/nuget/

上传nuget包

上传nuget包的方式很简单,在Nuget Package Explorer的File->Publish菜单,就可以打开nuget上传页面。该页面需要填写两个内容:

  • Publish Url:nuget服务器的发布地址,可以在nuget server首页查看到
  • Publish key or PAT:发布时验证合法性的密钥,可以跟nuget server的管理员询问得到

删除nuget包

经过上面的几个步骤之后,nuget包就已经完成打包和发布工作了,并且可以提供给其他同事使用。但是如果不小心上传了错误的nuget包,或者在发布后一段时间发现有的nuget包版本存在严重问题,不能提供给其他人使用,而且想要删掉该怎么办呢?

对此Nuget Package Explorer表示无能为力,要完成这个工作可以借助nuget官方提供的nuget.exe工具来完成这个事情。

nuget.exe支持delete命令,详细文档可以参考此处

从官方网站下载nuget.exe在命令行中直接执行nuget.exe后(不含参数),会列出nuget程序支持的所有命令:

输入nuget help delete,弹出如下提示:

以本文中上传的nuget包Company.Application.Model.Lib v1.0.0为例,删除命令是:

nuget delete Company.Application.Model.Lib 1.0.0  -ApiKey xxxx -Source http://ip:port/nuget

执行命令后会弹出提示,提示是否真的需要删除,直接输入y并回车就ok了。

总结

相对于传统的dll管理方式,使用nuget的方式可以极大的提高方便性并有效的对于依赖项进行版本化的管理。解决方案编译时还能自动下载nuget包的相关内容,有条件的情况下还是尽量使用nuget进行公共文件的管理。

参考资料

Nuget快捷实践的更多相关文章

  1. MVC WebAPI 三层分布式框架开发

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理 ...

  2. 转载CSDN (MVC WebAPI 三层分布式框架开发)

    前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理,是本文论述的重点.此外,插件技术的应用,富客户端JQ ...

  3. SOA(面向服务的架构)

    前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理,是本文论述的重点.此外,插件技术的应用,富客户端JQ ...

  4. 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何

    基于 Vue.js 之 iView UI 框架非工程化实践记要   像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...

  5. Eclipse扩展点实践之添加快捷菜单项(Command方式实现)

    有两种方式,一种是Action的方式,另一种是Command的方式(这两种方式的区别详见:http://wiki.eclipse.org/FAQ_What_is_the_difference_betw ...

  6. Nuget Server的搭建及实践之旅

    一. 背景 在做的一个项目使用的是Asp.Net MVC,由于缺少规范与约束,团队成员在使用类库各自为政,时常出现路径和版本不一致的问题.在一个同事建议下,开始尝试使用Nuget 管理项目或公司使用的 ...

  7. gRPC-微服务间通信实践

    微服务间通信常见的两种方式 由于微服务架构慢慢被更多人使用后,迎面而来的问题是如何做好微服务间通信的方案.我们先分析下目前最常用的两种服务间通信方案. gRPC(rpc远程调用) 场景:A服务主动发起 ...

  8. CAP-微服务间通信实践

    微服务间通信常见的两种方式 由于微服务架构慢慢被更多人使用后,迎面而来的问题是如何做好微服务间通信的方案.我们先分析下目前最常用的两种服务间通信方案. gRPC(rpc远程调用) gRPC-微服务间通 ...

  9. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

随机推荐

  1. Python实例浅谈之三Python与C/C++相互调用

    一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不经过 ...

  2. 福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)

    Team information 队名: 彳艮彳亍团队 各成员短学号.名: 学号: 姓名: 本次博客链接: 041602209 黄毓明(临时队长)  https://www.cnblogs.com/m ...

  3. opencv源码编写规则

    OPENCV作为一种开源的计算机视觉库,我们有必要去了解这个库的一些编码格式及文件结构. 1.文档命名规则 必须将所有功能放入一个或多个.cpp和.hpp文件到OpenCV的相应模块中,或者如果贡献的 ...

  4. 设置UniDbGrid的整行显示颜色,如果某字段值是我们的控制字段

    设置UniDbGrid的整行显示颜色,如果某字段值是我们的控制字段,使用下列判断设置更快捷一点: procedure TUniForm.UniDBGridDrawColumnCell(Sender: ...

  5. ubuntu16.04安装maven

    一.下载maven apache maven官网地址:http://maven.apache.org/download.cgi 找到Link列下的“apache-maven-3.5.2-bin.tar ...

  6. 背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性

    [源码下载] 背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性 作者 ...

  7. 重新编译安装swoole支持OpenSSL

    1.下载:wget http://pecl.php.net/get/swoole-1.9.22.tgz 2.解压:tar zxvf swoole-1.9.22.tgz 3.扩展模块:cd swoole ...

  8. 《http权威指南》读书笔记3

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  9. 如何使用spring配合mybatis配置多个数据源并应用?

    使用多数据源的场景应该是很多的,如操作同一台服务器上不同的数据库,或者多地机器上的相同或不相同数据库. 虽然涉及到不同数据库时,我们也许可以通过跨库操作的方式,如 other.user 使用同一数据源 ...

  10. Java匹马行天下之JavaSE核心技术——面向对象

    面向对象 注: 看此篇时强烈建议有一定的面向对象思想基础,有一定的基础后先翻到下面看第九条:      9.面向对象: 从未封装→封装→继承→多态→抽象类→接口的代码演变 按这个逻辑去看,,哪有不理解 ...