使用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安装到另外一台服务器解决了这个问题。