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服务器的步骤,希望对大家的工作和学习有所帮助 ...
随机推荐
- Lua如何管理”package”
Lua如何管理"package" 方式一: 私有方法和变量都需要显式定义为local类型的,这很容易造成错误.一旦不小心漏写,就又将方法定义为全局的了. "package ...
- windows 系统下C++实现的多线程
摘抄http://blog.csdn.net/huyiyang2010/article/details/5809919 Thread.h #ifndef __THREAD_H__ #define __ ...
- VS2008 C++ 利用WinHttp API获取Http请求/响应头部Header
http://www.cnblogs.com/LCCRNblog/p/3833472.html 这一篇博客中,实现了获取http请求/响应后的html源码,现在需要获取http请求/响应的头部Head ...
- Python-week2,第二周(基于Python3.0以上)
1,列表 存储数据我们可以使用变量,但是当有很多个数据的时候用变量就会出现很多的局限性,所以这时候就用到了列表.列表就是中括号里每个元素使用逗号隔开.列如 [1,2,3] 这就是一个列 ...
- vConsole--针对手机网页的前端 console 调试面板。
一个针对手机网页的前端 console 调试面板. 简介 vConsole 是一个网页前端调试面板,专为手机 web 页面量身设计,帮助开发者更为便捷地进行开发调试工作. 手机预览 http://we ...
- JS是按值传递还是按引用传递?【转载】
最近遇到个有趣的问题:“JS中的值是按值传递,还是按引用传递呢?” 在分析这个问题之前,我们需了解什么是按值传递(call by value),什么是按引用传递(call by reference). ...
- 【机器学习实战】第15章 大数据与MapReduce
第15章 大数据与MapReduce 大数据 概述 大数据: 收集到的数据已经远远超出了我们的处理能力. 大数据 场景 假如你为一家网络购物商店工作,很多用户访问该网站,其中有些人会购买商品,有些人则 ...
- webStorm恢复误删除文件或工程
背景: 提交git时可能由于没有提交所有文件,不知什么原因导致最近几天所写文件全部消失,所改文件全部恢复到以前.最终通过webstorm找回项目.下面总结通过webstorm找回误删文件,或恢复到历史 ...
- 高阶函数实现AOP
AOP(面向切面程序)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日至统计.安全控制.异常处理等.把这些功能抽离出来之后,再通过"动态织入&quo ...
- C#中??和?分别是什么意思?
在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null ...