nuget包管理:使用NuGet Package Explorer制作、发布包到nuget服务器以及从nuget服务器删除包的方法

制作、发布所用工具:NuGetPackageExplorer

项目 git 地址: NuGetPackageExplorer git地址
uwp app:商店地址本次演示所用版本为:UWP 5.0.9

制作包

  • 在左侧界面中添加包的一些基本信息。

  • 在右侧界面中添加 lib 文件夹,在其中鼠标右键可以自动生成一些特定.NET版本的文件夹,便于不同的 .NET 版本项目在安装的时候可以根据设定的版本文件夹来进行安装对应框架版本的 dll 。

  • 建议将 dll 和 xml 文件全部放到 lib 文件夹内(这样子其他项目在安装后不会在项目同级生成 “注释xml” 文件,但是注释xml仍生效( xml 和 dll 会直接生成在 packages 同一文件夹中了))

  • 描述、说明写在 description 字段中。

发布包:

  • 发布的时候,需要填写下 nuget服务器所在的地址以及设定的ApiKey。

  • 注意:一个项目的一个版本号只能发布一次,如果发布多次会提示406错误。

  • dll有更新,则在更改版本号后,重新进行publish。

添加其它包依赖

  • 点击标识2按钮的时候,不要指定 “Target Framework”

  • 在点击第3步按钮出现的弹框中,选择已经发布到服务器上的包。(演示下使用包 TestModel),如下:

安装含有依赖项的包

这里直接新建一个测试项目安装 TestTool 包( TestTool 包依赖了 TestModel 包)

新建一个测试项目 TestConsole ,其初始引用如下:

安装 TestTool:

安装完成后:提示信息如下:

自动添加了依赖项 TestModel:

发布一个预览版本的包

只要在版本号中包含 -beta,-alpha,-rc 即可,如:“2.0.0-alpha-01”,

之后,在安装的时候,需要勾选 “包括预发行版” ,才能显示包含预发布语义的版本,如下:

删除已经发布的包

方法一:

  • 直接到服务器上删除对应的文件夹

方法二:

删除需要用到 nuget.exe
下载:https://www.nuget.org/downloads
commands doc:https://docs.microsoft.com/en-us/nuget/tools/cli-ref-delete

定位到 nuget.exe 所在目录,执行:

1
2
3
$nuget.exe delete <packageID> <packageVersion> [options]
如这里删除 Test.Model 这个包的 1.0.0 版本,则为:
$./nuget.exe delete Test.Model 1.0.0 -Source http://192.168.1.120:4200/nuget -apikey 40bf22ac8e42

发布一个只包含配置文件的 nuget包(如只包含配置文件但不包含 dll 文件)

背景:想要统一log4net配置文件以及log4net相关dll版本号。这个时候,希望安装nuget包的时候只有配置文件,而没有类库自身的dll文件。

  1. 修改配置文件的属性,将 【生成操作】 项的值改成 【内容】----默认为【无】 ,如下:

  1. 对需要打包成 nuget包 的项目进行打包:

  • 会自动生成nuget发布文件,如 SanbenTech.Log4net.1.0.0.nupkg ,但这里需要注意下,有的时候点击打包没有任何反应,这个时候清理下项目/解决方案再进行尝试即可。

  1. 打开 nupkg 文件,将项目的 dll 文件进行删除,如下:

  1. 其他项目进行安装:

  • 但这里需要注意下,安装 nuget 包后,会在项目中自动生成配置文件,但默认情况下,编译的时候是不会复制到bin文件夹的,需手动调整下属性,如上图所示。

  • 另外有的时候安装会报错,如“错误 NU1202 包 SanbenTech.Log4net 1.0.0 与 netcoreapp2.1 (.NETCoreApp,Version=v2.1) 不兼容。 包 SanbenTech.Log4net 1.0.0 不支持任何目标框架。”,这个是 nuget 包缓存导致的,解决方法:清空nuget缓存,或者换一个版本号重新进行发布即可。