一.借助Docker搭建私有Nuget服務(wù)器
使用nuget包的優(yōu)勢(shì)不言而喻,舉個(gè)常見(jiàn)的例子奸晴,A團(tuán)隊(duì)和B團(tuán)隊(duì)都用到同一個(gè)類庫(kù)绽诚,這個(gè)時(shí)候A團(tuán)隊(duì)和B團(tuán)隊(duì)不需要這個(gè)類庫(kù)的代碼,只需要用Nuget包還原内列,就能完成引用撵术。與此同時(shí),如果這個(gè)類庫(kù)升級(jí)了话瞧,只要引用的Nuget包還是一樣的版本嫩与,就不會(huì)出現(xiàn)引用升級(jí)而造成的編譯錯(cuò)誤寝姿。
而出于工作環(huán)境或其他原因,Nuget包可能不能發(fā)布到公有的Nuget服務(wù)器划滋,這個(gè)時(shí)候可以考慮Docker一鍵搭建一個(gè)內(nèi)網(wǎng)可以訪問(wèn)的Nuget服務(wù)器饵筑。
這里我們假設(shè)你已經(jīng)有一臺(tái)運(yùn)行Docker的服務(wù)器,輸入如下命令:
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
用當(dāng)前目錄的nuget文件夾掛載Nuget服務(wù)器的數(shù)據(jù)
-e NUGET_API_KEY=ee28314c-f7fe-2550-bd77-e09eda3d0119
設(shè)置Nuget服務(wù)器的管理Key
二. 打包發(fā)布Nuget包
dotnet pack [--help] [--output] [--no-build] [--build-base-path] [--configuration] [--version-suffix] [project]
需要注意的是如果已經(jīng)存在的Nuget包处坪,再發(fā)布是會(huì)提示錯(cuò)誤的根资,如果不是正式版本的升級(jí),則需要其他標(biāo)識(shí)區(qū)分同窘,如beta1嫂冻,則執(zhí)行的命令為dotnet pack --version-suffix beta1
默認(rèn)的輸出文件夾在bin目錄下的Debug目錄,可以看到生成了對(duì)應(yīng)版本號(hào)的相關(guān)文件塞椎。
接下來(lái)借助Nuget.exe執(zhí)行如下命令:
Nuget.exe push -Source {NuGet package source URL} -ApiKey key {your_package}.nupkg
三.引用私有Nuget服務(wù)器的Nuget包
對(duì)于VS桨仿,可以直接配置Nuget來(lái)直接還原私有服務(wù)器上的Nuget包
然而對(duì)于VSCode或者其他編輯器來(lái)講,如果沒(méi)配置過(guò)Nuget案狠,則需要在項(xiàng)目中引入Nuget.config來(lái)完成
<?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>
本文采用 知識(shí)共享署名-非商業(yè)性使用-相同方式共享 3.0 中國(guó)大陸許可協(xié)議
轉(zhuǎn)載請(qǐng)注明:作者 張蘅水