本文章主要介绍如何将本地dll打包成为一个Nuget包,并如何发布到自己的nuget服务器,示例代码下载。章节如下

1. 本地dll如何打包,以及版本的更新

2. 在linux上搭建nuget.server

3. 在windows上搭建nuget.server

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包的更多相关文章

  1. 玩转Nuget服务器搭建(三)

    前两篇已经介绍了如何打包.如何搭建nuget server web站点,接下来让我们介绍一下,如何在我们的vs中访问我们自己搭建的nuget服务器中的包. vs访问我们自己的nuget服务器中的包   ...

  2. 如何发布一个npm包(基于vue)

    前言:工作的时候总是使用别人的npm包,然而我有时心底会好奇自己如何发布一个npm包呢,什么时候自己的包能够被很多人喜欢并使用呢...今天我终于迈出了第一步. 前提:会使用 npm,有 vue 基础, ...

  3. 从0到1发布一个npm包

    从0到1发布一个npm包 author: @TiffanysBear 最近在项目业务中有遇到一些问题,一些通用的方法或者封装的模块在PC.WAP甚至是APP中都需要使用,但是对于业务的PC.WAP.A ...

  4. 发布一个npm包(webpack loader)

    发布一个npm包,webpack loader: reverse-color-loader,实现颜色反转. 初始化项目 mkdir reverse-color-loader cd ./reverse- ...

  5. nuget服务器搭建

    本文章主要介绍如何将本地dll打包成为一个Nuget包,并如何发布到自己的nuget服务器,示例代码下载.章节如下 1. 本地dll如何打包,以及版本的更新 2. 在linux上搭建nuget.ser ...

  6. VS2017 Nuget服务器搭建,简易版

    熟悉Visual Studio 的小伙伴肯定听说过“Nuget”这个词,关于Nuget是如何如何方便就不再赘述了,这里主要介绍一下如何搭建个人的Nuget服务器. 直奔主题 第一步:打开VS2017 ...

  7. NuGet服务器搭建教程

    本文主要来自网络,进行整理而成,相关文章如下: http://diaosbook.com/Post/2012/12/15/setup-private-nuget-server https://www. ...

  8. 玩转Nuget服务器搭建(一)

    背景                                                                                      公司项目是分模块进行架构 ...

  9. 图解NuGet服务器搭建和使用过程

    听语音 浏览:0 | 更新:2017-10-31 09:13 | 标签:服务器 1 2 3 4 5 6 7 分步阅读 本篇经验将和大家介绍内网搭建NuGet服务器的步骤,希望对大家的工作和学习有所帮助 ...

随机推荐

  1. 关于mysql的临时表并行的问题

    mysql的临时表并行是没问题的 以为临时表是基于会话的 1.因为在mysql里面每个会话的sessionid 不一样 2.其实就是会话级别的临时表  DB2里面有会话级别 全局级别的临时表,Orac ...

  2. poj 3461 Oulipo(KMP模板题)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 36903   Accepted: 14898 Descript ...

  3. 原生JS实现图片放大镜插件

      前  言 我们大家经常逛各种电商类的网站,商品的细节就需要用到放大镜,这个大家一定不陌生,今天我们就做一个图片放大镜的插件,来看看图片是如何被放大的…… 先看一下我们要是实现的最终效果是怎么样的  ...

  4. 全局作用域 eval

    eval是在caller的作用域里运行传给它的代码: var x = 'outer';   (function() {     var x = 'inner';     eval('x'); // & ...

  5. android wear开发之:创建可穿戴设备应用 - Creating Wearable Apps

    注:本文内容来自:https://developer.android.com/training/wearables/apps/index.html 翻译水平有限,如有疏漏,欢迎批评指教. 译:山人 创 ...

  6. [转载] Linux内存管理之mmap详解

    转载自http://blog.chinaunix.net/uid-26669729-id-3077015.html 一. mmap系统调用 1. mmap系统调用 mmap将一个文件或者其它对象映射进 ...

  7. [转载] FreeMarker教程

    转载自http://www.blogjava.net/freeman1984/archive/2010/11/04/337239.html FreeMarker是一个模板引擎,一个基于模板生成文本输出 ...

  8. [转载] Netty

    转载自http://lippeng.iteye.com/blog/1907279 Netty是什么? 本质:JBoss做的一个Jar包 目的:快速开发高性能.高可靠性的网络服务器和客户端程序 优点:提 ...

  9. ANDROID基础ACTIVITY篇之ACTIVITY的生命周期(二)

    除了Activity的七大生命周期方法外外,还有两个相当重要的方法需要大家熟记那就是onSavelnstanceState()和onRestoreinstanceState(). 那么什么时候会调用这 ...

  10. 基于.NET CORE微服务框架 -surging 基于messagepack、protobuffer、json.net 性能对比

    1.前言 surging内部使用的是高性能RPC远程服务调用,如果用json.net序列化肯定性能上达不到最优,所以后面扩展了protobuf,messagepack序列化组件,以支持RPC二进制传输 ...