发布自己的nuget包

STEP 1:获取API Key

首先,你需要到NuGet上注册一个新的账号,然后在My Account页面,获取一个API Key,或者是自建服务器上生成一个API Key(我没有自建服务器,所以这个过程我不太清楚,直接问你们公司的IT要呗)

STEP 2:部署本地NuGet.exe

NuGet有个命令行工具:NuGet.exe,通过该工具,在CMD中通过命令行可以实现你要的所有功能。

为了方便使用,请设置机器的PATH环境变量,自己选一个路径把NuGet.exe放里面,然后把该路径注册的PATH环境变量,重启计算机。

STEP 3:设置API Key

在cmd命令行工具中使用以下命令设置NuGet API Key:

> setApiKey <my_api_key>

设置了这个API Key后你的计算机会吧该key记住,在后面进行推送的时候会使用该key进行验证操作

STEP 4:开发自己的类库(Class Library)

我开发的是一个C#的类库,开发完成后在Properties下的AssemblyInfo.cs里面吧相关信息完善,打包的时候nuget会获取这里面的信息,然后编译生成该项目

STEP 5:打包(生成清单文件)

打开CMD窗口,通过cd命令切换到*.csproj(我的是NuGet.lyh.Practice.csproj)目录下,通过以下命令生成打包的清单文件

> nuget spec

执行完你会看到NuGet.lyh.Practice.csproj目录下多了一个NuGet.lyh.Practice.nuspec文件。

手动打开NuGet.lyh.Practice.nuspec文件,把需要替换的信息替换掉,不需要的tag全部删掉,注意里面的$xxx$宏,这些就是引用了AssemblyInfo.cs中的设置值,在编译产生package的时候,会使用AssemblyInfo.cs中的相应值进行替换。

注意两点:

1、$description$使用AssemblyDescriptionAttribute的值进行替换,在产生package之前,一定要记得先编译项目,否则会提示$description$找不到的错误;

2、releaseNotes如果没有,就直接删掉这个节点,如果有,则填入自己的内容,不要使用默认内容,否则会在下一步产生警告信息。

STEP 6:打包(生成*.nupkg包)

在cmd窗口中使用如下命令打包生成*.nupkg包

nuget pack NuGet.lyh.Practice.csproj

nuget pack NuGet.lyh.Practice.csproj –IncludeReferencedProjects    打包时包含引用的项目

nuget pack NuGet.lyh.Practice.csproj -Prop Configuration=Release   打包release的dll,默认打包的是debug目录下的dll

执行完成后会发现多了一个NuGet.lyh.Practice.1.0.1.nupkg文件,到这里就成功的生成了nupkg包了

STEP 7:发布自己的类库

如果你执行了步骤三,你的ApiKey已经记在系统中了,使用如下命令就可以将*.nupkg包推送到nuget.org服务器了

> nuget push NuGet.lyh.Practice.1.0.1.nupkg –Source nuget.org (步骤三,你的ApiKey已经记在系统中)

> nuget push NuGet.lyh.Practice.1.0.1.nupkg {ApiKey} –Source nuget.org  (明确指定ApiKey)

如果你是自建了服务器的话把Source参数nuget.org 修改成你自己的服务器地址就行了

比如我们公司的服务器nuget地址是http://192.1.1.1:1000/nuget那么我使用下面这条命令进行推送

> nuget.exe push {package file} {apikey} -Source http://192.1.1.1:1000/nuget

同一个名字同一个版本的包只能推送一次哦

在批处理命令中实现自动打包并推送到nuget服务器

@echo off
::项目名称和程序集名称(经常是同样的名字,但是也可能不一样,看你自己项目设置)
set ProjectName={替换成你项目名字}
set AssemblyName={替换成你打包程序及名字}
::Nuget发布的账号密码,中间用英文冒号隔开(account:password)
set ApiKey= {替换成你的ApiKey}
::发布模式 Release/Debug
set PublishMode=Release
::Nuget发布地址
set SourceUrl=nuget.org ::这里开始禁止修改
del %AssemblyName%.*.nupkg /F /Q
nuget pack %ProjectName%.csproj -Build -Prop Configuration=%PublishMode%
nuget push %AssemblyName%.*.nupkg -Source %SourceUrl% -ApiKey %ApiKey%
del %AssemblyName%.*.nupkg /F /Q

在Gitlab的CI脚本中实现自动打包并推送到nuget服务器

在yml脚本开头先定义这些变量

variables:
DeployPrjName: {你的项目名字}
DeployAssemblyName: {你要打包的程序及名字}
ApiKey: {你的ApiKey}
PublishMode: Release
SourceUrl: nuger.orgt

在yml脚本deploy stage中加上这样一个job就能实现在mster分支推送过去后自动打包并推送道你的nuget服务器发布了

deployJob:
stage: deploy
tags:
- Windows
- VisualStudio
only:
- master
script:
- echo "starting deploy"
- cd "%DeployPrjName%"
- del %DeployAssemblyName%.*.nupkg
- C:\\tools\\nuget.exe pack %DeployPrjName%.csproj -Build -Prop Configuration=%PublishMode%
- C:\\tools\\nuget.exe push %DeployAssemblyName%.*.nupkg -Source %SourceUrl% -ApiKey %ApiKey%
- rmdir /s /q bin
- rmdir /s /q obj
- del %DeployAssemblyName%.*.nupkg /F /Q
dependencies:
- buildJob

C#程序设置版本自动更新

项目>属性>应用程序>程序集信息(I)中将版本号最后一位或最后两位修改成*即可,如下图所示

应为只有版本号更新了nuget才能推送成功,所以这个步骤非常必要

获取NuGet包

在C#项目 引用 上右键选择 管理NuGet程序包 跳出如下界面,在界面上选择一下程序包源就可以搜索浏览对应源位置的nuget包了,如下图所示。(我的包是推送到公司服务器,大多数时候大家推送到nuget.org,所以程序包源默认都是选择nuget.org)

怎样设置添加自己公司的程序包源或者是本地磁盘上的离线*.nupkg文件呢?

在程序包源右边的设置按钮弹出如下窗口,在这里设置Nuget包源位置并点击更新就行了。

Nuget包的三种不同来源

1.nuget.org

这是默认就有的

2.你公司自建服务器

将包源位置设置你你公司服务器url即可,如上图中程序包源MyCompany项设置

3.本地硬盘离线包文件

在上图中包源位置设置时,点击黄色高亮的“…”按钮,浏览找到你的nuget包(*.nupkg)所在目录,将包源位置设置为该目录即可

在没有网络的情况下用户怎样还原依赖的Nuget包

在没有网络的情况下Visual studio无法连接到Nuget包数据源服务器,会导致无法恢复Nuget包产生找不到引用项的问题。该问题可以在其他有网络的计算机上获取Nuget包,拷贝过来放在你计算机上某个位置,在包源列表中添加一项,把包源位置设置为该目录即可。Visual Studio在恢复nuget包的时候再尝试遍历你的包源列表,直到获取到该包为止。

获取Nuget包文件

方法一:

在已经安装了该包的solution下找到packages文件夹,Nuget包文件就在这里,直接拷贝即可

方法二:

在有网络的地方,打开cmd命令行输入以下命令下载包文件

nuget install SeeSharpTools.JXI.Debug -Source {Source url} -DirectDownload

参考

Microsoft Note:创建 NuGet 包

Microsoft Note:快速入门:使用 Visual Studio 创建和发布 NuGet 包(仅限 .NET Standard 和 Windows)

Microsoft Note:.nuspec 引用

Microsoft Note:NuGet CLI 参考

https://docs.microsoft.com/zh-cn/nuget/tools/nuget-exe-cli-reference

https://blog.csdn.net/huwei2003/article/details/53116851

https://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx

https://www.cnblogs.com/xcsn/p/6258005.html

NuGet 使用问题 Source parameter was not specified.

使用NUget发布自己的dll(转)

发布自己的类库到NuGet

Vs自定nuget push菜单

使用NuGet发布自己的.NET NuGet 包( .NET Standard & Windows)的更多相关文章

  1. [经验分享]NuGet发布自己的Dll(类库包)

    什么是Nuget Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基于.NET Framework的应用时,Nuget能把在项目中 ...

  2. Nuget的使用笔记-(使用nuget发布dll到www.nuget.org)

    Nuget是神马东东? 来自nuget.org官方的介绍 ----------------------------------------------------------------------- ...

  3. 使用NuGet发布自己的类库包(Library Package)

    STEP 1:注册并获取API Key 首先,你需要到NuGet上注册一个新的账号,然后在My Account页面,获取一个API Key,这个过程很简单,我就不作说明了. STEP 2:下载NuGe ...

  4. [Visual Studio] NuGet发布自定义包(Library Package)

    源文章:dax.net http://www.cnblogs.com/daxnet/archive/2013/05/07/3064577.html 使用NuGet发布自己的类库包(Library Pa ...

  5. 使用Nuget发布自己的类库包

    NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些V ...

  6. 示例:在Nuget发布自己的包的步骤

    原文:示例:在Nuget发布自己的包的步骤 一.目的:很多时候都在用第三方的Nuget包,现成的轮子可以减少很多工作量,同时我们也可以造轮子供自己和其他人使用,本示例主要演示如何发布dll到Nuget ...

  7. NuGet 发布

    其实吧,我并没有用到nuget发布,但是在做项目的过程中,我需要别的系统给我接口,所有吧,人家就发 布了了一个nuget程序集,而我呢,就引用了一下,然后就可以用了,又不吧,本人小编好奇心比较重,所以 ...

  8. 搭建本地Nuget服务器并使用NuGet Package Explorer工具打包nuget包

    1.什么是Nuget: 百度百科描述: Nuget是 ASP .NET Gallery 的一员.NuGet 是免费.开源的包管理开发工具,专注于在 .NET 应用开发过程中,简单地合并第三方的组件库. ...

  9. 记一次结巴分词.net core 2.0版 nuget发布过程

    最近用到分词考虑很久,选用了结巴分词,原因见博客Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考 既然选好了,难就开始行动吧 . 查了.ne ...

随机推荐

  1. (LeetCode 153)Find Minimum in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  2. 单页WEB应用(三),Chat聊天模块

    Chat 聊天模块 这个模块应该就是该书全篇的唯一一个模块吧,后面差点儿全部的篇章都环绕这个模块去实现的,只是就通过这一个模块的实现和上线,也能体现单页应用开发到公布上线的整个过程,毕竟后面的数据.通 ...

  3. android开发步步为营之67:使用android开源项目android-async-http异步下载文件

    android-async-http项目地址 https://github.com/loopj/android-async-http.android-async-http顾名思义是异步的http请求, ...

  4. 消息队列的使用场景(转载c)

    作者:ScienJus链接:https://www.zhihu.com/question/34243607/answer/58314162来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  5. 灰度图像二值化-----c++实现

    前天闲着没事干,就写了写BMP图像处理,感觉大家还比较感兴趣..所以现在没事,继续更新..这次简单的写了灰度图像二值化..这是什么概念呢? 图像的二值化的基本原理 图像的二值化处理就是将图像上的点的灰 ...

  6. android设备上运行i-jetty服务

    android设备上运行i-jetty服务: 1) i-jetty安装 本人小菜一个,i-jetty源码有好几个文件,不知道怎么运行起来,于是找了一个现成可运行的i-jetty工程(感谢这位同学的分享 ...

  7. Websocket——Websocket原理

    偶然在知乎上看到一篇回帖,瞬间认为之前看的那么多资料都不及这一篇回帖让我对 websocket 的认识深刻有木有.所以转到我博客里,分享一下.比較喜欢看这样的博客,读起来非常轻松.不枯燥,没有布道师的 ...

  8. Fiddler Session标志

    Each Session object in Fiddler contains a collection of string flags, in the Session.oFlags[] collec ...

  9. java面试第十六天

    国际化:让世界上每个人都能看懂. Locale类(java.util包下):包括所有国家.地区.语言 存在很多的静态属性,来表示国家.语言 三种构造方法: Locale(String language ...

  10. wso2esb安装及helloworld

    1.系统环境 Ubuntu12.04    192.168.0.97    root/password找管理员 Ubuntu12.04    192.168.0.99    root/password ...