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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nuget 是如何还原包的

發布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nuget 是如何还原包的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nuget 是如何還原包的

Intro

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

Nuget 包的引用

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

示例:

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

對于 dotnet framework 項目,如果使用 PackageReference 包格式和上面一樣,如果是傳統的 packages.config 包形式,會有一個 packages.config 的文件包含引用的 nuget 包,文件內容示例:

<?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 或自己的包源上下載之后會存放在本地的一個文件夾中,下次再需要相同版本的包還原時就會直接從本地的包中獲取,而這個保存的文件夾是 nuget 配置的一部分,在網上可以找到一些修改 nuget 默認保存 packages 文件夾的位置,但是這些文章都很類似,都只是給出了一個解決方案然而并沒有說明為什么要這么做,這么做的根據是什么并沒有說明,其實這種解決方案是添加了一個默認的 nuget 配置文件,修改了 nuget 包保存的位置

nuget 配置

默認配置

nuget 會有一些默認的配置,可以參考官方文檔:https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#config-p

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

默認配置文件

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

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

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

創建 %AppData%\NuGet\NuGet.Config 這個默認的配置文件,然后在這個配置文件里配置 globalPackagesFolder 來修改默認的 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>

Reference

  • https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#config-p

  • https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-config

總結

以上是生活随笔為你收集整理的nuget 是如何还原包的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。