用ProGet搭建本地私有NuGet仓库
搭建ProGet
下载
官网下载Windows版本的Inedo Hub (https://inedo.com/proget/download)
下载下来的软件名: ProGetInstaller.exe
安装
点击ProGetInstaller.exe,出现如下安装界面
Registration 选项选择 Free ;
SQL Sever 选项选择 Specify instance,添加Connection string:
data source=192.168.195.129;user id=sa;password=yourStrong(!)Password;MultipleActiveResultSets=True;
Database Name选项默认的数据库名称是ProGet(可以新建一个空库也可以不建,安装时,如果没有对应数据库,程序会自动创建数据库)
Hosting 选项默认选择 Intergrated Web Server ,就是以服务的方式安装。
添加成功后,SQL Server选项会显示选中刚刚新加的服务器IP地址
点击安装后,输入名称和邮件地址来获取到免费的key。
安装成功后的IndeoHub界面
在Services里面可以看到有两个服务正在运行,ProGet的服务和其Web服务。
通过Windows的任务管理器里的服务也可以看到这两个服务。
InedoHub的Configuration界面是ProGet的相关配置信息,包括数据库链接字符串,Key,以及ProGet的网站端口号。
本机IP为192.168.1.48,所以访问 http://192.168.1.48:8624 ,出现如下界面说明ProGet安装成功。
配置
点击网站的头像部分,然后点击登录
网站的管理员账号及初始密码是Admin/Admin。
登录管理员账号后,设置Task
给匿名用户添加 Publish Packages (发包)权限。
添加Connectors,添加NuGet官方配置
新增Feed,选择第三方包NuGet,Feed 名称为ZeroGet。
新建成功
进入ZeroGet,我们会发现没有任何包,点击 Manage Feed 按钮,进入该Feed的管理界面,在Feed Connectors 项目里面,点击 add connector 按钮,选择先前新建的名叫Nuget的Connector。
再次进入ZeroGet的Feed界面,结果如下,我们把NuGet官网的包信息也同步过来了!
上传程序集
下载NuGet
NuGet官网下载地址 https://www.nuget.org/downloads
将下载好的nuget.exe放在特定的位置,例子的路径是 D:\Program Files (x86)\NuGet\nuget.exe
设置环境变量
如下图,编辑环境变量Path,新增nuget.exe的所在文件夹路径,这样cmd命令行就可以直接使用nuget命令进行相关的打包操作了
项目打包
修改项目程序集信息
这里介绍的是简单的通过修改项目的AssemblyInfo.cs文件来修改程序集的发布信息。
打开AssemblyInfo.cs文件,一般是修改如下内容就够了
[assembly: AssemblyDescription("这是描述的信息")]//程序集的描述
[assembly: AssemblyCompany("Zero")]//程序集的作者或所属公司
[assembly: AssemblyCopyright("Copyright © 2019")]//程序集版权信息
[assembly: AssemblyVersion("1.0.1")]//程序集版本
[assembly: AssemblyFileVersion("1.0.1")]//文件版本一般与程序集版本一致
项目打包
在打包之前,先编译生成一遍项目。
运行cmd命令行,进入到要打包的项目的.csproj文件所在目录下,运行如下命令
nuget pack -Build -Properties Configuration=Release
结果如下,成功生成Zero.Test.1.0.1.nupkg文件
上传到本地仓库
在本地的ProGet网站的对应ZeroGet的Feed里面有添加包的 Add Package 按钮,点击后,提升如下四种添加方式,我们是通过NuGet的命令行来进行添加的,点击对应选项。
点击通过NuGet的命令行来进行添加的对应选项后,弹出如下提示内容。
上面命令脚本如下,[API key]的选项是可选的,可以不填。
NuGet.exe push
承接上面的具体操作,在成功生成nupkg文件后,运行下面的脚本
nuget push Zero.Test.1.0.1.nupkg -Source http://192.168.1.48:8624/nuget/ZeroGet/
结果如下图:
浏览器访问本地ProGet,显示信息如下
进入ZeroGet的Feed里面,我们可以看到刚刚本地新上传的程序集是置顶显示的。
点击测试的程序集,查看程序集具体信息,作者信息,描述信息,版本信息都是我们程序里面编辑的。
查看程序集依赖和项目比较,也是一样的。
OK,打包并上传成功,下面就是要本地项目使用刚刚的程序集了。
下载使用程序集
获取包源
在ZeroGet的Feed页面,显示有API endpoint URL:http://192.168.1.48:8624/nuget/ZeroGet/,
该路径就是ZeroGet的包源路径。
添加包源
打开VS,工具》NuGet包管理器》程序包管理器设置
点击NuGet包管理器下的程序包源,点击新增按钮,新增ZeroGet本地包源,如下图。
使用包源
在项目下,右击打开“管理NuGet程序包”,将程序抱怨切换到ZeroGet,如下图所示,我们就可以看到我们刚刚上传到本地库的程序集信息了。
点击安装后,自动安装该程序集以及它的依赖项。如下图。
验证程序引用正常
下图是Zero.Test项目代码,简单的将对象转换成字符串类型。
下图是在控制台项目,用NuGet应用程序集Zero.Test后,调用Zero.Test.Convertor.GetObjString方法的执行结果,说明Zero.Test该程序集正常工作,引用正常。