1. 程式人生 > 程式設計 >NuGet 修改包路徑

NuGet 修改包路徑

NuGet 是 .NET 平臺下的一個免費、開源的包管理開發工具。

修改全域性包管理目錄

通過 NuGet 安裝包時,NuGet 先將包下載至一個統一的目錄,預設路徑是:C:\Users\使用者名稱\.nuget\packages

下載的包多了以後,會導致 C 盤空間被大量佔用。我們可以通過修改配置將其指定到自定義的目錄下。

搜尋 NuGet.Config 檔案,預設位置是:C:\Users\使用者名稱\AppData\Roaming\NuGet,在根節點下新增如下配置:

<config>
  <add key="globalPackagesFolder" value="D:\packages"
/>
</config> 複製程式碼

如果 NuGet.Config 不存在,也可以在 C:\Program Files (x86)\NuGet\Config 目錄下新建一個 NuGet.Config,將該資料夾中的 Microsoft.VisualStudio.Offline.config 檔案的內容複製到新建的 NuGet.Config 中,再在其中新增上述的節點。

修改專案中的包路徑

安裝包時,NuGet 會先搜尋全域性包管理目錄,如果需要安裝的包已經存在,則不會去 NuGet 網站下載,不存在時則會先將包下載至本地全域性目錄下。

然後將全域性包管理目錄下的包檔案拷貝一份至當前專案下的 packages

資料夾中,並將相應 DLL 新增至專案引用。(你在全域性包管理目錄下找一個包,在其中新建一個文字檔案,然後在專案中通過 NuGet 安裝該包,你會發現你新建的這個文字檔案也被複制到了專案的 packages 目錄下的對應包中。)

如果每個專案下都有一個 packages,會導致硬碟中有大量重複的包檔案,讓人非常的不爽。可以通過配置,讓專案引用同一個目錄下的包檔案。

例如你的專案都是在 D:\src 目錄下,你想將其中的所有專案的包檔案都放在 D:\src\packages 目錄下,目錄結構如下:

D:\src
 |-- Soluation A
 |-- Soluation B
 |-- Soluation C
 |-- packages
複製程式碼

D:\src 目錄下新建一個 NuGet.config 檔案,在其中新增如下內容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <!-- 預設不將 packages 提交到原始碼管理 -->
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <config>
    <!-- 指定這個目錄下預設的 packages 目錄 -->
    <add key="repositorypath" value="D:\src\packages" />
  </config>
  <packageRestore>
    <!-- 預設啟用 packages 還原 -->
    <add key="enabled" value="True" />
  </packageRestore>
</configuration>
複製程式碼

這樣,在這個目錄內的專案中使用 NuGet 時,NuGet 會檢測這個配置檔案並讀取裡面的配置資訊,如果子目錄內也有 NuGet.config 檔案,那麼 NuGet 會自動將子目錄內的配置與上級目錄的配置合併,存在相同的配置時,以子目錄內的配置優先。

參考文章:

beginor.github.io/2013/03/31/…