溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nuget是怎么還原包的

發(fā)布時(shí)間:2021-09-01 20:24:56 來源:億速云 閱讀:125 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“nuget是怎么還原包的”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“nuget是怎么還原包的”吧!

nuget 是如何還原包的

Intro

一直以來從來都只是簡(jiǎn)單的用 nuget 包,最近想折騰一個(gè)東西,需要自己搞一個(gè) nuget 包的解析,用戶指定 nuget 包的名稱和版本,然后去解析對(duì)應(yīng)的 nuget 包并添加引用到項(xiàng)目, 于是就想搞明白 nuget 包是怎么還原的,對(duì)于本地已經(jīng)下載了的 nuget 包又是怎么找的

Nuget 包的引用

對(duì)于 dotnetcore 項(xiàng)目(這里不算之前那種 project.json 的項(xiàng)目,只討論 *.csproj 這種項(xiàng)目),都是使用新的項(xiàng)目格式,PackageReference 模式

示例:

<PackageReference Include="WeihanLi.Common" Version="1.0.39" /> 
 

對(duì)于 dotnet framework 項(xiàng)目,如果使用 PackageReference 包格式和上面一樣,如果是傳統(tǒng)的 packages.config 包形式,會(huì)有一個(gè) packages.config 的文件包含引用的 nuget 包,文件內(nèi)容示例:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
</packages>
 

本文主要說明 dotnetcore 這種 PackageReference 這種形式

 

nuget 包的還原

nuget 包在第一次從 nuget.org 或自己的包源上下載之后會(huì)存放在本地的一個(gè)文件夾中,下次再需要相同版本的包還原時(shí)就會(huì)直接從本地的包中獲取,而這個(gè)保存的文件夾是 nuget 配置的一部分,在網(wǎng)上可以找到一些修改 nuget 默認(rèn)保存 packages 文件夾的位置,但是這些文章都很類似,都只是給出了一個(gè)解決方案然而并沒有說明為什么要這么做,這么做的根據(jù)是什么并沒有說明,其實(shí)這種解決方案是添加了一個(gè)默認(rèn)的 nuget 配置文件,修改了 nuget 包保存的位置

 

nuget 配置

 

默認(rèn)配置

nuget 會(huì)有一些默認(rèn)的配置,可以參考官方文檔:https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#config-section

nuget 配置中有一個(gè) globalPackagesFolder 的配置,是用來指定默認(rèn)的 nuget 包保存的位置,在 Windows 上默認(rèn)的保存位置是 %userprofile%\.nuget\packages,在 Linux/Mac 上默認(rèn)的保存位置是 ~/.nuget/packages,可以使用 nuget.configNuGet.Config 配置文件來修改默認(rèn)的保存文件,除此之外,還可以通過環(huán)境變量的方式,配置 NUGET_PACKAGES 來修改默認(rèn) nuget 包保存的位置

 

默認(rèn)配置文件

nuget 的默認(rèn)配置文件,官方文檔:https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-config#options

Windows 上默認(rèn)配置文件的位置是 %AppData%\NuGet\NuGet.Config 這也是現(xiàn)在網(wǎng)上那些修改默認(rèn)保存 nuget 包位置的大多用的解決方案, Linux/Mac 上大多是 ~/.config/NuGet/NuGet.Config,有的可能是 ~/.nuget/NuGet/NuGet.Config(和系統(tǒng)版本有關(guān)系)

Windows 上默認(rèn)是沒有這個(gè)配置文件的,添加這個(gè)默認(rèn)配置文件之后就是全局作用的

創(chuàng)建 %AppData%\NuGet\NuGet.Config 這個(gè)默認(rèn)的配置文件,然后在這個(gè)配置文件里配置 globalPackagesFolder 來修改默認(rèn)的 nuget 包保存路徑

示例:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
  <config> 
    <add key="globalPackagesFolder" value="D:\nuget\packages" />
  </config>
</configuration>
   

到此,相信大家對(duì)“nuget是怎么還原包的”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI