Nuget本地臨時緩存路徑處理

一、前言
日常開發(fā)工程中,常常會使用到三方框架或組件程序集,這些依賴的為 Nuget 包引入方式。本地不存在或沒有對應(yīng)版本的時,在還原 Nuget包 或者項目由 Vs 初次打開時,Vs會依賴本地的 Nuget 的已啟用包源配置自動下載到本地的緩存路徑,默認情況下該路徑為當前用戶帳戶目錄下,.nuget/.Nuget 目錄的 packages 中。如果本地使用和開始過的項目越多,類型和依賴越多,那本地的臨時文件緩存也就越多,這些包文件會隨著時間的推移,越來越大,占用 C盤 本就不多的存儲空間。
二、解決辦法
那可以直接清除嗎?可以。如果讀者不嫌棄麻煩,可以不定期的對其進行清除,畢竟項目多,不是每次都需要開啟所有的項目,刪除本地臨時依賴包也是可以的,只是避免不了,多次打開不同依賴的項目,仍然回去下載對應(yīng)依賴包。
其實也有對應(yīng)其他的方式,可以解決對應(yīng)問題。以下是筆者整理的兩種辦法,各有優(yōu)劣。
方式一、修改緩存路徑
C:\Program Files (x86)\NuGet\Config中Microsoft.VisualStudio.Offline.config內(nèi)容節(jié)點添加如下內(nèi)容:
? version="1.0" encoding="utf-8"?>
?<configuration>
? ?<packageSources>
? ? ?<add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"/>
? ?packageSources>
? ?<config>
? ? ?<add key="globalPackagesFolder" value="D:\Program Files\Nuget\Package" />
? ?config>
?configuration>其中,D:\Program Files\Nuget\Package 讀者可以替換為自己想要存儲緩存文件的對應(yīng)路徑。
然后將 .nuget/packages 文件夾中的緩存文件復制到對應(yīng)上述配置好的目錄中,基本上就算是完成遷移操作。
也可以在文件目錄下創(chuàng)建,Nuget.config,將Microsoft.VisualStudio.Offline.config配置文件內(nèi)容復制到其中,并添加如下內(nèi)容:
? version="1.0" encoding="utf-8"?>
?<configuration>
? ?<packageSources>
? ? ?<add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"/>
? ?packageSources>
? ?<config>
? ? ?<add key="globalPackagesFolder" value="D:\Program Files\Nuget\Package" />
? ?config>
?configuration>配置之后,記得關(guān)閉 Vs 后重啟。避免因為 Vs 的緩存問題造成新路徑當前項目無效。
同時需要注意,有時候會出現(xiàn)對應(yīng) Nuget.config 在軟件升級安裝過程中,被覆蓋重置,導致配置被清空。
方式二、創(chuàng)建軟鏈接【推薦方式】
除了修改Nuget配置以外,還有一種簡單方式是,遷移當前緩存包到其他盤符,nuget目錄配置不變,構(gòu)建目錄鏈接指向遷移目錄。一般在當前用戶目錄下:.dotnet/packages 中,筆者直接遷移整個 .dotnet 文件夾,指向其他盤。
這里需要使用到指令 mklink ,這是系統(tǒng)自帶指令,不需要額外安裝。具體操作如下:
1、在目標盤符中,創(chuàng)建對應(yīng)文件夾,此處為 D:\Program Files\Nuget\Package,然后 packages 文件夾中的所有文件統(tǒng)統(tǒng)移動到目標文件夾 D:\Program Files\Nuget\Package 中。
2、遷移完成后,回到 .nuget 目錄下,以管理員權(quán)限打開命令提示符,切換路徑到 .nuget 文件路徑作為工作路徑,執(zhí)行指令 mklink ,具體如下:
?>mklink
?創(chuàng)建符號鏈接。
?
?MKLINK [[/D] | [/H] | [/J]] Link Target
?
? ? ? ? /D ? ? 創(chuàng)建目錄符號鏈接。默認為文件
? ? ? ? ? ? ? ? 符號鏈接。
? ? ? ? /H ? ? 創(chuàng)建硬鏈接而非符號鏈接。
? ? ? ? /J ? ? 創(chuàng)建目錄聯(lián)接。
? ? ? ? Link ? 指定新的符號鏈接名稱。
? ? ? ? Target 指定新鏈接引用的路徑
? ? ? ? ? ? ? ? (相對或絕對)。
? >mklink /D packages "D:\Program Files\Nuget\Package"
?為 packages <<===>> D:\Program Files\Nuget\Package 創(chuàng)建的符號鏈接輸出如上結(jié)果,表示目錄鏈接創(chuàng)建成功,同時 .nuget 目錄下生成如下文件,類型為文件類型,實際指向?qū)?yīng)的 D:\Program Files\Nuget\Package 文件目錄,有別于快捷方式鏈接。

從兩種方式來看,第二種,創(chuàng)建目錄鏈接的方式,改動成本更小,出錯率更低一些,所以筆者推薦以第二種方式進行 Nuget 本地臨時緩存目錄的調(diào)整操作。以上就是筆者整理的相關(guān)技巧。
往期推薦

