目的:怎樣從自己用Nexus構建的Nuget倉庫發布或下載dll
實現:
我們前面已經講過用Docker來運行Nexus構建Maven倉庫,這次我們將通過Nexus構建的Nuget倉庫來發布和下載我們的dll,所以之前的關於Nexus的搭建就不在此描述了!
其實Nexus默認已經有了Nuget的倉庫,我們只需要設置好相應權限給相關人員即可,例如:
接下來主要說明我們怎樣發布我們的dll,或一些第三方的dll到我們的倉庫中去,下面我們以發布一個第三方的dll到倉庫后在下載來說明:
1、獲取Nuget API Key
我們如果需要發布dll到Nexus的Nuget倉庫的話,一個是需要管理員授予權限,另外一個是要查看Nuget API Key,如果自己沒權限,可以找管理員,例如:
2、下載nuget.exe
將下載的nuget.exe文件放到需要打包的路徑,或者將nuget.exe的存放路徑添加到path中去,反正就是要能正常運行nuget.exe
3、創建.nuspec文件
我們可以通過cmd,先當前目錄切換到你需要打包的目錄,另外打包目錄需要創建lib文件夾,如果有framework版本的,我們還可以在lib下創建類似net45的文件夾,
即:"打包路徑/lib/net45",我們在"打包路徑/lib/net45"下放入需要打包的dll,如果有相關xml也可放入,例如:
這些准備好后,我們切回到打包路徑,運行如下命名(后面的TIBCO.EMS替換為你需要發布的dll的ID):
nuget spec TIBCO.EMS
如果運行正常,應該會生成TIBCO.EMS.nuspec文件(相應的dll ID名.nuspec),例如:
4、修改TIBCO.EMS.nuspec(TIBCO.EMS替換為你需要發布的dll的ID)
因為上面生成的.nuspec文件只是個模板,我們需要針對我們自己的具體情況來調整,例如調整為:
<?xml version="1.0"?> <package > <metadata> <id>TIBCO.EMS</id> <version>8.3.0</version> <authors>AngusYang</authors> <owners>Esquel</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>TIBCO EMS DLL V8.3.0</description> <releaseNotes>TIBCO EMS DLL V8.3.0</releaseNotes> <copyright>Copyright 2017</copyright> <tags>TIBCO EMS</tags> <dependencies> </dependencies> </metadata> </package>
當然,如果有依賴的話,需要添加依賴的dll ID和版本等信息!例如我另外一個自己dll的配置信息:
<?xml version="1.0"?> <package > <metadata> <id>CommonWebServiceLibrary</id> <version>1.0.0</version> <authors>AngusYang</authors> <owners>Esquel</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Esquel Common WebService Library for TIBCO ESB</description> <releaseNotes>Release first version to Nexus Server.</releaseNotes> <copyright>Copyright 2017</copyright> <tags>Esquel ESB</tags> <dependencies> <group targetFramework=".NETFramework4.5"> <dependency id="log4net" version="2.0.5" /> <dependency id="TIBCO.EMS" version="8.3.0" /> </group> </dependencies> </metadata> </package>
5、創建.nupkg文件
但我們修改好我們的.nuspec文件后,我們將運行如下命名進行打包,例如:
nuget pack TIBCO.EMS.nuspec
如果運行正常,應該會在打包目錄生成.nupkg文件,例如:
6、發布
當我們成功打包后,我們就可以執行我們的發布命令了,例如:
nuget.exe push -Source http://[mynexusserver:port]/repository/nuget-hosted/ -ApiKey [第一步獲取的NugetAPIKey] TIBCO.EMS.8.3.0.nupkg
將[]以及里面的內容替換為你相應的內容即可,如果運行成功,應該可以在倉庫中能夠找到,例如:
發布在此已基本完成,接下來講VS來下載安裝:
7、設置Package Manager Settings
選擇Tools-->NuGet Package Manager-->Package Manager Settings進行設置,如果沒有NuGet Package Manager可以通過Tools-->Extensions and Updates來查找安裝一個,例如:
點擊后增加一個自己的package soureces,地址為自己的Nexus服務器及端口,創建好后勾選上,取消掉默認的倉庫,因為Nexus里面已經配置了該倉庫,這樣可以統一從Nexus來獲取:
8、獲取安裝自己需要的dll
我們點擊項目運行Manage NuGet Packages來搜索我們自己需要的dll,如果能夠找到,說明配置成功,我們點擊安裝即可!