日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NuGet的使用、部署、搭建私有服务

發(fā)布時(shí)間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NuGet的使用、部署、搭建私有服务 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 前言
    • 什么是NuGet?
    • 為什么要使用NuGet
    • NuGet的優(yōu)點(diǎn)
  • 使用
    • Get-Help NuGet
    • Install-Package
    • Get-Package
    • Uninstall-Package
  • 制作NuGet庫包
  • 搭建NuGet服務(wù)器
  • 上傳NetGet庫包
  • 新增NuGet源
  • 總結(jié)

前言

什么是NuGet?

Nuget是一個(gè).NET平臺下的開源的項(xiàng)目,它是Visual Studio的擴(kuò)展。在使用Visual Studio開發(fā)基于.NET Framework的應(yīng)用時(shí),Nuget能把在項(xiàng)目中添加、移除和更新引用的工作變得更加快捷方便。

為什么要使用NuGet

如果我們項(xiàng)目開發(fā)不需要引用任何第三方庫包或者我們自己的公共庫包,那么使用NuGet毫無作用,但是實(shí)際情況恰恰相反,任何項(xiàng)目都需要記錄日志,最好的情況是我們有一個(gè)公共的日志模塊,任何老項(xiàng)目或新項(xiàng)目我們可以引用它,就無需再做開發(fā)。就那我們自己的項(xiàng)目來說,FC,FGOnline,FGMain,FGClient,FGServer,目前我們沒有一個(gè)公共的日志模塊,底層使用Kernal及其他庫包可能也不是一個(gè)版本,即使是同一個(gè)版本我們開發(fā)上都是將dll手工拷來拷去。在新項(xiàng)目上來說這增大了工作量和開發(fā)量,因此我們需要一個(gè)庫包管理機(jī)制來管理我們私有庫包和我們需要使用的第三方庫包。

NuGet的優(yōu)點(diǎn)

拿AsyncModule.NetMQ.dll舉例,AsyncModule.NetMQ.dll依賴NetMQ.dll,而NetMQ.dll又依賴AsyncIO.dll。
目前我們需要數(shù)據(jù)庫連接的地方我們需要引用AsyncModule.NetMQ.dll,我們可能會(huì)把它手工烤到我們需要的項(xiàng)目中,但是由于AsyncModule.NetMQ.dll需要依賴NetMQ.dll,因此我們還需要手工把NetMQ.dll拷到我們的項(xiàng)目中,同時(shí)由于NetMQ.dll需要依賴AsyncIO.dll,因此我們還需要手工把AsyncIO.dll拷到我們的項(xiàng)目中。依賴這當(dāng)中就會(huì)有些問題,比如我們忘記拷了,或者我們拷的版本不是我們當(dāng)前需要的,就會(huì)導(dǎo)致很多問題。
NuGet就可以讓我們避免這個(gè)問題。若我們需要的庫包已經(jīng)導(dǎo)入到我們庫包服務(wù)器中,那么我們只需要一條語句就可以引用該dll,同時(shí)NuGet會(huì)自動(dòng)將其依賴包一起引用到我們的項(xiàng)目中,這完全是自動(dòng)的。

使用

在VS中找到?Package Manager Console對話框

若界面上沒有找到,則從工具-NuGet Package Manager下找

Get-Help NuGet

使用Get-Help NuGet命令查看幫助

PM> Get-Help nuget TOPICabout_NuGetSHORT DESCRIPTIONProvides information about NuGet Package Manager commands.LONG DESCRIPTIONThis topic describes the NuGet Package Manager commands. NuGet is an integrated package management tool for adding libraries and tools to .NET projects.The following NuGet cmdlets are included.Cmdlet Description------------------ ----------------------------------------------Get-Package Gets the set of installed packages. With -ListAvailable, gets the set of packages available from the package source.Install-Package Installs a package and its dependencies into the project.Uninstall-Package Uninstalls a package. If other packages depend on this package, the command will fail unless the –Force option is specified.Update-Package Updates a package and its dependencies to a newer version.Add-BindingRedirect Examines all assemblies within the output path for a projectand adds binding redirects to the application (or web) configuration file where necessary.Get-Project Returns a reference to the DTE (Development Tools Environment) for the specified project. If none is specifed, returns the default project selected in the Package Manager Console.Open-PackagePage Open the browser pointing to ProjectUrl, LicenseUrl or ReportAbuseUrl of the specified package.Register-TabExpansion Registers a tab expansion for the parameters of a command.SEE ALSOOnline documentation: http://go.microsoft.com/fwlink/?LinkID=206619Get-PackageInstall-PackageUninstall-PackageUpdate-PackageAdd-BindingRedirectGet-ProjectOpen-PackagePageRegister-TabExpansion

Install-Package

使用Install-Package安裝庫包,安裝時(shí)會(huì)自動(dòng)安裝當(dāng)前Framework知道的庫包及依賴包,若不支持則會(huì)提示錯(cuò)誤。

PM> Install-Package AsyncModule.NetMQ Attempting to resolve dependency 'NetMQ (≥ 4.0.0.1)'. Attempting to resolve dependency 'AsyncIO (≥ 0.1.26)'. Installing 'AsyncIO 0.1.26.0'. Successfully installed 'AsyncIO 0.1.26.0'. Installing 'NetMQ 4.0.0.1'. Successfully installed 'NetMQ 4.0.0.1'. Installing 'AsyncModule.NetMQ 1.1.0'. Successfully installed 'AsyncModule.NetMQ 1.1.0'. Adding 'AsyncIO 0.1.26.0' to NuGet.Client. Successfully added 'AsyncIO 0.1.26.0' to NuGet.Client. Adding 'NetMQ 4.0.0.1' to NuGet.Client. Successfully added 'NetMQ 4.0.0.1' to NuGet.Client. Adding 'AsyncModule.NetMQ 1.1.0' to NuGet.Client. Successfully added 'AsyncModule.NetMQ 1.1.0' to NuGet.Client.

安裝的時(shí)候注意對應(yīng)的庫包源

Get-Package

使用Get-Package安裝庫包

PM> Get-PackageId Version Description/Release Notes -- ------- ------------------------- AsyncIO 0.1.26.0 AsyncIO AsyncModule.NetMQ 1.1.0 基于NetMQ的異步Socket框架 NetMQ 4.0.0.1 A 100% native C# port of the lightweight high performance messaging library ZeroMQ

Uninstall-Package

使用Uninstall-Package卸載已安裝的庫包,依賴包不會(huì)自動(dòng)卸載,有需要?jiǎng)t需要手工卸載依賴包

PM> Uninstall-Package AsyncModule.NetMQ Removing 'AsyncModule.NetMQ 1.1.0' from NuGet.Client. Successfully removed 'AsyncModule.NetMQ 1.1.0' from NuGet.Client. Uninstalling 'AsyncModule.NetMQ 1.1.0'. Successfully uninstalled 'AsyncModule.NetMQ 1.1.0'.

若庫包有多個(gè)版本則在庫包后面加上-Version 版本號參數(shù)安裝指定版本的庫包。若依賴包指定版本已經(jīng)安裝則不會(huì)重復(fù)重新安裝。

PM> Install-Package AsyncModule.NetMQ -Version 1.1.0 Attempting to resolve dependency 'NetMQ (≥ 4.0.0.1)'. Attempting to resolve dependency 'AsyncIO (≥ 0.1.26)'. Installing 'AsyncModule.NetMQ 1.1.0'. Successfully installed 'AsyncModule.NetMQ 1.1.0'. Adding 'AsyncModule.NetMQ 1.1.0' to NuGet.Client. Successfully added 'AsyncModule.NetMQ 1.1.0' to NuGet.Client.

當(dāng)然也可以使用圖形界面找到上圖中的Manager NuGet Package For Solution...打開圖形界面,在需要安裝的庫包右側(cè)點(diǎn)擊安裝,和輸入命令是一樣的。

界面左側(cè)列表包含已安裝庫包,在線,更新等篩選,在線里面根據(jù)數(shù)據(jù)源分類。中間則是當(dāng)前數(shù)據(jù)源庫包列表,右側(cè)則是搜索欄和選中庫包的詳細(xì)信息。

當(dāng)安裝了依賴包我們可以在項(xiàng)目根目錄找到packages.config文件,會(huì)記錄我們安裝的庫包及版本信息

同時(shí)在我們的項(xiàng)目文件夾下會(huì)有個(gè)packages的文件夾用于保存我們下載下來的庫包

制作NuGet庫包

若我們需要上傳我們的dll到NuGet服務(wù)器中,首先需要讓我們VS編譯時(shí)能導(dǎo)出NuGet所支持的.nupkg文件
在解決方案上面右擊找到Enable NuGet Package Restore點(diǎn)擊開啟功能

開啟后我們需要手動(dòng)在項(xiàng)目的.csproj文件中在PropertyGroup下加入以下節(jié)點(diǎn)

<BuildPackage>true</BuildPackage><RestorePackages>true</RestorePackages>


同時(shí)在Project節(jié)點(diǎn)內(nèi)增加以下內(nèi)容

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /><Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"><PropertyGroup><ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText></PropertyGroup><Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /></Target>

再次編譯項(xiàng)目就會(huì)自動(dòng)編譯出.nupkg文件。

如果是.Net Standard 項(xiàng)目直接在程序右鍵打包即可打包。

搭建NuGet服務(wù)器

新建一個(gè)項(xiàng)目


這里使用3.0版本的NuGet.Server,需要.Net Framework 4.6支持。
然后引用NuGet.Server庫包

PM> Install-Package NuGet.Server

安裝完成后,編譯啟動(dòng)即可,就是這么簡單,然后托管到IIS上。

上傳庫包的時(shí)候可能需要apikey,需要在web.config中設(shè)置。

上傳NetGet庫包

編譯出NuGet我們需要將包上傳到NuGet服務(wù)器中,這樣我們才能在VS中從NuGet服務(wù)器中下載下來。這里我使用NuGet Package Explorer工具進(jìn)行上傳,官方支持Win10商店和使用Chocolatey下載。
若需要上傳到NuGet官方服務(wù)器中可以在NuGet官網(wǎng)上傳,但是我們一般需要上傳到指定NuGet服務(wù)器上,如我們自己的NuGet服務(wù)器。

選擇第一項(xiàng)找到本地的.nupkg文件


左側(cè)可以編譯一下信息,


當(dāng)上傳了多個(gè)版本的dll,NuGet.Server會(huì)根據(jù)包Id和Version進(jìn)行分組

在輸入命令的時(shí)候可以用TAB鍵智能提示出當(dāng)前所有版本號

我們也可用通過命令上傳

nuget.exe push {package file} {apikey} -Source http://www.jnuget.com:10080/nuget

當(dāng)我們同一個(gè)包上傳過同一個(gè)版本的時(shí)候再次上傳會(huì)報(bào)錯(cuò),我們需要?jiǎng)h除NuGet.Server已存在的包,后才能再次上傳。或者我們可以允許通過包同一個(gè)版本允許覆蓋上傳,將web.Config的allowOverrideExistingPackageOnPush配置改為true即可

新增NuGet源

在Tools-Options-NuGet Package Manager-Package Sources可以增加數(shù)據(jù)源

點(diǎn)擊右上角的加號新增,輸入完地址后點(diǎn)一下更新即可。

總結(jié)

通過此片文章講解了如何使用、部署NuGet,如何編譯生成,上傳庫包到NuGet。

總結(jié)

以上是生活随笔為你收集整理的NuGet的使用、部署、搭建私有服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。