使用NuGet Package Explorer发布程序包到指定的Nuget服务器

想要将自己的程序包发布到Nuget服务器,必须经过连个基本过程(他们分别是:打包生成.nupkg文件,然后在上传到Nuget服务器),下面我就分别从打包、上传两方面来进行讲解。
1. 打包
也就是生成 .nupkg 文件有三种方式:
方式一: 通过nuget pack命令比如,我们对一个名称为“项目A”的VS2010项目进行打包,对应的命令行是:
nuget pack 项目A.csproj -Build -Properties Configuration=Release

运行该命令后,nuget会自动调用msbuild以Release方式编译该项目并在当前文件夹中生成“项目A.nupkg”

方式二:在Visual Studio编译时自动打包,這中方式先要在VS2010中启用Eable NuGet Package Restore,然后修改发布项目的.csproj文件,在PropertyGroup中添加<BuildPackage>true</BuildPackage>,如下图:

  这样设置后,Visual Studio编译该项目时会自动在bin文件夹中生成对应的.nupkg文件。

方式三:通过msbuild命令在编译时进行打包,比如,在命令行中运行下面的命令:

msbuild CNBlogs.Infrastructure.Logging.csproj /p:BuildPackage=true

 

2、上传至Nuget服务器

上传通常也有很多种,例如,通过msbuild命令、NuGet Package Explorer客户端工具(本文重点推荐主要是他简单方便易操作),下面我们分别介绍两种:

第一种:msbuild命令上传Nuget,命令如下

nuget push 项目A.nupkg -s http://nuget.cnblogs.com 12345trewq

注:项目A.nupkg是包包的名称,http://nuget.cnblogs.com是NuGet Server网址,12345trewq是之前在web.config中设置的apiKey。

第二种:NuGet Package Explorer客户端工具直接上传,如下如是我们之前已经生成好的xxx.nupkg那么我们选择使用NuGet Package Explorer工具打开,在按照截图的步骤操作即可顺利完成。

 

后续操作如下如:

 

 

 

 

以上则是整个发布的全部流程,下面在额外讲一下,途中可以会遇到的问题以及通过批处理实现打包/上传一条龙。

打包/上传一条龙(批处理实例):

nuget pack ..\CNBlogs.Domain.Core\CNBlogs.Domain.Core.csproj -Build -Properties Configuration=Release
nuget pack ..\CNBlogs.Bootstrap\CNBlogs.Bootstrap.csproj -Build -Properties Configuration=Release
nuget pack ..\CNBlogs.Presentation.Web\CNBlogs.Presentation.Web.csproj -Build -Properties Configuration=Release
nuget push *.nupkg -s http://nuget.cnblogs.com 12345trewq

通常大多都会采用這中方法,该方法在一些系统构建工具中也可以使用(例如:Jenkins构建工具等等)

 

可能会遇到的问题:

我们执行这个命令后,出现错误(产生这个错误是由于IIS安装了WebDAV模块)

Failed to process request. 'Method Not Allowed'.
The remote server returned an error: (405) Method Not Allowed..

解决办法:

删除WebDAV Module与WebDAV Hanlder,上传时会返回404错误,通过浏览器访问路径nuget/Packages也是404错误。
查看IIS日志发现nuget push实际执行的是HTTP PUT操作 —— PUT /api/v2/package/,WebDAV不允许这个操作。
根据网上的说法,必须要卸载WebDAV,可是这台服务器上有一个站点需要它,后来将NuGet Server安装到另外一台服务器解决了这个问题。

 

 

posted @ 2017-11-14 21:45  ζ๓蜗牛  阅读(369)  评论(0编辑  收藏  举报