NuGet自建服务器教程
1.部署服务器
1.1.新建asp.net web 应用程序
说明:使用vs2019创建,点击here会显示http
error404,建议使用vs2017。但是用vs2017创建后用vs2019打开显示正常
1.2.安装nuget服务包——NuGet.Server
1.3.运行项目
运行上述web项目,在浏览器打开
1.4.删除重复节点
直接运行会报错,根据提示删除重复节点,则可以成功运行
1.5.发布项目
右键NuGetWeb项目——发布,选择文件夹(可在本地建一个文件夹专门管理nuget包)
1.6.配置IIS网站
如果没有开启iis服务,在控制面板——启用或关闭Windows功能中开启iis服务
打开上述网站,成功运行即可
点击here,可发现如图所示信息
1.7.可能遇到的问题
解决:这是因为iis安装不完全,打开控制面板——程序——启用或关闭Windows功能,勾选asp.net 4.7,点击确定进行安装,刷新之后即可出现正常页面
2.生成Nuget包并运用——插件自动化生成
2.1. 安装nuget插件:NuGet.Package.Builder
想要生成哪些项目文件的nuget包,则在对应项目文件安装该插件,安装完后编译时会在生成文件夹中自动生成nupkg文件
- 如果想修改版本号,在项目文件——properties——AssemblyInfo.cs中或者在项目中的nuspec文件中修改version信息
- 如果想修改版本号为1.0.*格式(*代表每次编译时版本号自动叠加),需要把对应项目文件.csproj(可右击项目——在文件资源管理器中打开,找到.csproj)中的:
<Deterministic>true</Deterministic>
改为:
<Deterministic>false</Deterministic>
如下所示:
2.2.配置发布信息
在package.builder.json文件中(如果有多个项目,则每个项目中的json文件都需要修改):
- 修改43行:“PublishOnBuild”: false,
改为:“PublishOnBuild”: true, - 修改52行:“Source”: “”,
改为:“Source”: “E:\NuGetPublish\Packages”,(ps.该路径为上述发布路径下的packages文件夹)
2.3.配置nuget程序包源
工具——NuGet包管理器——程序包管理器设置——程序包源,输入名称和网址,网址即“1.6.配置IIS网站”步骤中打开的网站上显示的Repository URLs(见下方第二幅图)
2.4.修改程序包源
在nuget管理器中,修改程序包源即可找到刚刚发布的nuget包
2.5.允许他人访问
如果其它电脑无法访问,打开控制面板——系统和安全——Windows defender防火墙——高级设置——新建入站规则,新增上述端口8091允许连接,重启电脑,则处于同一局域网下的其余电脑可以访问该服务器
3.几点说明
3.1.关于nuget包生成
虽然在debug文件中仅存在最新生成的nuget包,但之前生成的nuget包已经成功发布到指定文件夹,所以无须担心
3.2.关于版本更新
如果修改assembly中的版本号,再右键重新生成,会在发布文件夹中新生成一个新版本的nuget文件,之前的不会删除
Ps.如果起始就是2.0.0.0版本,修改为1.0.0.0版本时,会生成对应的1.0.0.0版本的nupkg文件,但nuget服务器上依然显示最新的版本2.0.0.0
3.3.nuspec参数修改
如果修改nuspec文件其余参数,而不修改版本号
注意,上述id的修改必须与程序集名称(如下图)一致,否则会报错,所以最好不要修改,直接采用原始$id$读取assemblyinfo对应参数信息
由此可见,当版本号不变时,nuget文件会把之前的文件覆盖掉,可以看出nuget服务器上显示的信息包括nuget包的id(15以上版本是显示id,13版本显示的是title)、创作者、描述、版本号
3.4.nuspec文件参数说明
3.5.AssemblyInfo.cs参数说明
//设置程序集标题
[assembly: AssemblyTitle(".NET Pet Shop Model")]
//设置程序集描述信息
[assembly: AssemblyDescription(".NET Pet Shop Middle-Tier Components")]
//设置配置文件,如零售、发布、调试等信息。程序集在运行时不会使用该信息
[assembly: AssemblyConfiguration("")]
//设置公司名称信息
[assembly: AssemblyCompany("Microsoft Corporation")]
//设置软件名称
[assembly: AssemblyProduct(".NET Pet Shop 4.0")]
//设置版权信息
[assembly: AssemblyCopyright("Copyright ©2005 Microsoft Corporation")]
//设置合法商标信息
[assembly: AssemblyTrademark("")]
//指定程序集支持的区域性
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 属性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("df3527a1-e499-48f6-ad7e-d95aaa3d4a9f")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 内部版本号
// 修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("4.0.0.0")]
[assembly: AssemblyFileVersion("4.0.0.0")]
4.扩展学习——bat批处理法
4.1.新建文件夹Nuget
4.2.下载nuget.exe
网址:https://www.nuget.org/downloads
将nuget.exe放入上述文件夹(也可以放入一个专门的路径,方便以后使用),并在电脑属性中设置环境变量(这样就可以无视nuget.exe在哪个文件夹,cmd中直接输入nuget就可以使用)
4.3.各自生成nuspec文件
在1中输入cmd,enter后输入命令nuget spec,每个项目文件.csproj目录下生成nuspec文件(nuget配置文件),如下图
4.4.编辑nuspec配置文件,
将各个项目编辑好后的nuspec文件统一剪切到创建的Nuget文件夹中
4.4.生成nuget包
运行批处理文件createnuget.bat,生成nuget包.nukpg
4.5.推送并发布
运行批处理文件pushnuget.bat,推送到发布文件夹
推送后按照2.3和2.4步骤使用即可