一.借助Docker搭建私有Nuget服务器
使用nuget包的优势不言而喻,举个常见的例子,A团队和B团队都用到同一个类库,这个时候A团队和B团队不需要这个类库的代码,只需要用Nuget包还原,就能完成引用。与此同时,如果这个类库升级了,只要引用的Nuget包还是一样的版本,就不会出现引用升级而造成的编译错误。
而出于工作环境或其他原因,Nuget包可能不能发布到公有的Nuget服务器,这个时候可以考虑Docker一键搭建一个内网可以访问的Nuget服务器。
这里我们假设你已经有一台运行Docker的服务器,输入如下命令:
docker run -d -p 8080:80 -v $PWD/nuget/db:/var/www/db -v $PWD/nuget/packages:/var/www/packagefiles -e NUGET_API_KEY=ee28314c-f7fe-2550-bd77-e09eda3d0119 sunside/simple-nuget-server
-v
用当前目录的nuget文件夹挂载Nuget服务器的数据
-e NUGET_API_KEY=ee28314c-f7fe-2550-bd77-e09eda3d0119
设置Nuget服务器的管理Key
二. 打包发布Nuget包
dotnet pack [--help] [--output] [--no-build] [--build-base-path] [--configuration] [--version-suffix] [project]
需要注意的是如果已经存在的Nuget包,再发布是会提示错误的,如果不是正式版本的升级,则需要其他标识区分,如beta1,则执行的命令为dotnet pack --version-suffix beta1
默认的输出文件夹在bin目录下的Debug目录,可以看到生成了对应版本号的相关文件。
接下来借助Nuget.exe执行如下命令:
Nuget.exe push -Source {NuGet package source URL} -ApiKey key {your_package}.nupkg
三.引用私有Nuget服务器的Nuget包
对于VS,可以直接配置Nuget来直接还原私有服务器上的Nuget包
然而对于VSCode或者其他编辑器来讲,如果没配置过Nuget,则需要在项目中引入Nuget.config来完成
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="184" value="http://192.168.9.184:8080" />
</packageSources>
<disabledPackageSources>
<add key="Microsoft and .NET" value="true" />
</disabledPackageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
</configuration>
本文采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议
转载请注明:作者 张蘅水