nuget服务器搭建,以及如何发布一个Nuget包
本文章主要介绍如何将本地dll打包成为一个Nuget包,并如何发布到自己的nuget服务器,示例代码下载。章节如下
4. nuget常用命令
一、本地dll如何打包,以及版本的更新
本小节主要介绍两种方式将本地dll打包为Nuget包,
1.1 利用nuget.exe进行打包(应用于.net framework)
1. 下载nuget.exe
nuget.exe下载地址:https://www.nuget.org/downloads。
下载完成后,不需要安装。请将nuget.exe复制到需要打包的项目文件夹中
2. 打包成.nupkg包

- 首先运行
.\nuget spec生成.nuspec配置文件,用于nuget的配置项 【感谢niechangxu的提醒】 - 然后运行
.\nuget pack packageName发布成nuget包
3. 注意
此类库更新版本之后,再打包成.nuget文件,是不会重新生成.nuspec文件。
1.2 使用dotnet 进行打包(应用于.net core )
- 运行
dotnet pack即可对当前项目打包,必须在当前项目文件夹中支持(还有.csproj文件的目录) - 对项目进行版本行,可以配置.csprojc文件,如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.</TargetFramework>
<Version>...</Version>
<AssemblyVersion>...</AssemblyVersion>
<FileVersion>...</FileVersion>
</PropertyGroup>
</Project>
此处需要注意的时候,默认创建的dll是没Version, AssemblyVersion, FileVersion节点,需要自己手动添加;以及在更新版本后 .nuspec文件会根据版本重新创建一个:
1.3 配置nuget源
1. 本地文件包的方式
配置本地Nuget源。在工具 nuget包管理器 -> 程序包源,做如下配置
然后把发布的.nupkg包放在此文件夹即可
2. 配置自己服务器的源

注意,如果用的是linux版本,测源地址中不需要加nuget子目录。
1.4 使用
引入界面如下:
二、在linux上搭建nuget.server
本小节介绍如何使用docker来搭建属于自己的Nuget仓库
2.1. 运行docker镜像
docker run -d -p : -v $PWD/nuget/db:/var/www/db -v $PWD/nuget/packages:/var/www/packagefiles -e NUGET_API_KEY=ee28314c-f7fe--bd77-e09eda3d0119 sunside/simple-nuget-server
-v nuget:当前目录下nuget文件夹映射为 nuget-server的包,其中要有packages文件夹。他也有映射
nuget_api_key:表示此Nuget仓库的索引Key。push的要用的
2.2 创建一项目打包和发布
- 创建一个 classlib 库文件(web,或者webapi是不能打包的)
dotnet new classlib -n Nu.Common
- 打包 进入到项目根目录,也就是包含.csproj文件的目录
dotnet pack
命令成功后,会在bin/Debug目录下创建.nupkg文件
- 发布包 必须进入到.nupkg包所在位置
..\..\nuget.exe push -Source http://localhost:8080 -ApiKey ee28314c-f7fe-2550-bd77-e09eda3d0119 Nu.Common.1.0.0.nupkg

2.3. 引用包
- 在vs中的引用

- 在vscode中的引用
配置nuget.config配置文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="mySource" value="http://localhost:8080" />
</packageSources>
</configuration>
然后运行dotnet add package Nu.Common(包名)即可.
三、在windows上搭建
此方式更为简单,因为nuget上有现在的nuget.server这包,就是用于做这件事情的。步骤如下(此nuget包不支持.net core版本):
3.1 搭建项目
- 创建一个mvc 项目(空) 此项目必须的.net Framework版本必须>=4.6。

- 引入nuget.server这个nuget包

- 更改配置
| 节点名 | 说明 |
| apiKey | nuget.server的密钥配置,用于Push和delete包 |
| packagesPath | nuget.server中的包存放路径 |
配置节点都在appSettings节点下
3.2 运行此项目
- 解决一个错误,如果在运行时提示如下错误,请按照提示删除相应的节点

- 运行成功

- 发布和移除包 因为Nuget的客户端只有一个,可以参考docker搭建章节的push和delele
四、常用命令
| 命令 | 说明 | 示例 |
| push | 发布一个包到nuget.server,包名 apikey, -Source是必须的 | .\nuget.exe push .\ClassLibrary1.1.2.0.nupkg samlong -Source http://localhost:56546/nuget |
| delete | 从指定 -Source上移除一个包,必须指定版本 | ..\..\nuget.exe delete Nu.Common 1.0.0 samlong -Source http://localhost:56981/nuget |
| list | 查看服务器上有那些nuget 包 | .\nuget.exe list -Source http://localhost:56546/nuget |
当然dotnet 也是一样的
nuget服务器搭建,以及如何发布一个Nuget包的更多相关文章
- 玩转Nuget服务器搭建(三)
前两篇已经介绍了如何打包.如何搭建nuget server web站点,接下来让我们介绍一下,如何在我们的vs中访问我们自己搭建的nuget服务器中的包. vs访问我们自己的nuget服务器中的包 ...
- 如何发布一个npm包(基于vue)
前言:工作的时候总是使用别人的npm包,然而我有时心底会好奇自己如何发布一个npm包呢,什么时候自己的包能够被很多人喜欢并使用呢...今天我终于迈出了第一步. 前提:会使用 npm,有 vue 基础, ...
- 从0到1发布一个npm包
从0到1发布一个npm包 author: @TiffanysBear 最近在项目业务中有遇到一些问题,一些通用的方法或者封装的模块在PC.WAP甚至是APP中都需要使用,但是对于业务的PC.WAP.A ...
- 发布一个npm包(webpack loader)
发布一个npm包,webpack loader: reverse-color-loader,实现颜色反转. 初始化项目 mkdir reverse-color-loader cd ./reverse- ...
- nuget服务器搭建
本文章主要介绍如何将本地dll打包成为一个Nuget包,并如何发布到自己的nuget服务器,示例代码下载.章节如下 1. 本地dll如何打包,以及版本的更新 2. 在linux上搭建nuget.ser ...
- VS2017 Nuget服务器搭建,简易版
熟悉Visual Studio 的小伙伴肯定听说过“Nuget”这个词,关于Nuget是如何如何方便就不再赘述了,这里主要介绍一下如何搭建个人的Nuget服务器. 直奔主题 第一步:打开VS2017 ...
- NuGet服务器搭建教程
本文主要来自网络,进行整理而成,相关文章如下: http://diaosbook.com/Post/2012/12/15/setup-private-nuget-server https://www. ...
- 玩转Nuget服务器搭建(一)
背景 公司项目是分模块进行架构 ...
- 图解NuGet服务器搭建和使用过程
听语音 浏览:0 | 更新:2017-10-31 09:13 | 标签:服务器 1 2 3 4 5 6 7 分步阅读 本篇经验将和大家介绍内网搭建NuGet服务器的步骤,希望对大家的工作和学习有所帮助 ...
随机推荐
- KMP (next数组的性质及证明)
性质:如果len%(len-next[len-1])==0,则字符串中必存在最小循环节,且循环次数即为len/(len-next[len-1]); 证明:在前len个字符组成的字符串,存在最小循环节k ...
- JavaScript 和 TypeScript 交叉口 —— 类型定义文件(*.d.ts)
在 <从 JavaScript 到 TypeScript 系列> 文章我们已经学习了 TypeScript 相关的知识. TypeScript 的核心在于静态类型,我们在编写 TS 的时候 ...
- web前端优化--DOM性能优化
1.DOM访问与修改的优化: DOM访问是有代价的,修改DOM则会引起DOM的重绘与重排,而这两种操作会消耗性能. (1)缓存DOM:将频繁访问的对象或属性使用变量缓存起来,每次访问的时候,直接使用变 ...
- yum常用选项和参数
列举包文件 # yum list #列出资源库中所有可以安装或更新的rpm包 # yum list updates #列出资源库中所有可以更新的rpm包 # yum list installed #列 ...
- JAVASE高级2
反射概述 什么是反射? 反射的的概念是有smith1982年首次提出的,zhuy主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. JAVA反射机制是运行状态中,对于任意一个类,都能够知道这 ...
- linux 安装wordpress 无故往外发送大量垃圾邮件
linux 安装wordpress 无故往外发送大量垃圾邮件 始末 表现出来的现象就是, 网站运行没多久,mysql服务就挂了,重启也无法启动起来,提示 No such file or dicrion ...
- 一个非常有用的函数—COALESCE
很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,不用再像以前 IsNull 又 IsNull(SqlServe ...
- Maven依赖解析
本文将记录Maven工程中依赖解析机制,内容包括: Maven依赖基本结构 从仓库解析依赖的机制 依赖传递性解析实例 1. Maven依赖基本结构 上篇文章记录了Maven依赖的聚合与继承,POM中依 ...
- Python和Excel交互
Python和Excel交互 使用的python包为XlsxWriter 下载的链接 https://pypi.python.org/pypi/XlsxWriter 初级的例子: def write_ ...
- ECMAScript 6 第一天 let和const命令
ES6新增声明变量的方法let命令,const命令. (ES5只有两种声明变量的方法:var 命令和 function 命令.) let命令,用来声明变量. 与var声明变量不同于: 1. let声 ...