常見的 NuGet 配置
謝謝。
本文內(nèi)容
NuGet 的行為由一個或多個 NuGet 中的累積設(shè)置驅(qū)動。(XML) 文件,可以存在于項目范圍、用戶范圍和計算機范圍級別。還可以使用全局 .file 專門配置包源。這些設(shè)置適用于在 CLI、包管理器控制臺和包管理器 UI 中發(fā)出的所有命令。
配置文件 NuGet 的位置和范圍。文件位置說明
解決方案
當(dāng)前文件夾(又名解決方案文件夾)或驅(qū)動器根目錄之前的任何文件夾。
在解決方案文件夾中,設(shè)置適用于子文件夾中的所有項目。請注意,如果配置文件位于項目文件夾中,則不會影響該項目。
用戶
:
mac/Linux: 或 ~/.nuget/NuGet/NuGet。(因操作系統(tǒng)分布而異)
所有平臺都支持其他配置。這些配置無法通過該工具進行編輯。
:
%%\NuGet\\*.
mac/Linux: 或 ~/.nuget//*。
該設(shè)置適用于所有操作,但可以被任何項目級設(shè)置覆蓋。
:
mac/Linux:. 如果 $ 的值為 null 或為空,將使用 ~/.local/share 或 /usr/local/share(取決于操作系統(tǒng)版本)
設(shè)置雖然適用于計算機上的所有操作,但會被任何用戶級或項目級設(shè)置覆蓋。
NuGet 早期版本的說明:
更改配置設(shè)置
NuGet。文件是包含鍵/值對的簡單 XML 文本文件,請參閱 NuGet。話題。
設(shè)置通過 NuGet CLI 命令進行管理:
警告
盡管您可以在任何文本編輯器中修改文件,但如果配置文件包含格式錯誤的 XML(標簽不匹配、引號無效等),NuGet(v3.4.3 及更高版本)將靜默忽略整個配置文件。因此建議使用 nuget 來管理設(shè)置。
設(shè)置
:
# Set repositoryPath in the user-level config file
nuget config -set repositoryPath=c:\packages
# Set repositoryPath in project-level files
nuget config -set repositoryPath=c:\packages -configfile c:\my.Config
nuget config -set repositoryPath=c:\packages -configfile .\myApp\NuGet.Config
# Set repositoryPath in the computer-level file (requires elevation)
nuget config -set repositoryPath=c:\packages -configfile %ProgramFiles(x86)%\NuGet\Config\NuGet.Config
mac/Linux:
# Set repositoryPath in the user-level config file
nuget config -set repositoryPath=/home/packages
# Set repositoryPath in project-level files
nuget config -set repositoryPath=/home/projects/packages -configfile /home/my.Config
nuget config -set repositoryPath=/home/packages -configfile home/myApp/NuGet.Config
# Set repositoryPath in the computer-level file (requires elevation)
nuget config -set repositoryPath=/home/packages -configfile $XDG_DATA_HOME/NuGet.Config
注意
在 NuGet 3.4 及更高版本中,環(huán)境變量可以用于任何值,類似于 =%%() 和 =$(mac/Linux)。
刪除值
要刪除一個值,請指定一個具有空值的鍵。
# Windows
nuget config -set repositoryPath= -configfile c:\my.Config
# Mac/Linux
nuget config -set repositoryPath= -configfile /home/my.Config
創(chuàng)建一個新的配置文件
將下面的模板復(fù)制到一個新文件中,然后使用 nuget - 設(shè)置值:
<?xml version="1.0" encoding="utf-8"?>
如何應(yīng)用設(shè)置
多個 NuGet .file 可用于將設(shè)置存儲在不同位置,以便將設(shè)置應(yīng)用于單個項目、一組項目或所有項目。這些設(shè)置共同適用于從命令行調(diào)用的任何 NuGet 操作,或者“最接近”項目或當(dāng)前文件夾的設(shè)置優(yōu)先。
具體來說墨語涂鴉,NuGet 將按以下順序從不同的配置文件中加載設(shè)置:
,其中僅包含與包源相關(guān)的設(shè)置。計算機級文件。用戶級文件。使用 - 指定文件。在從驅(qū)動器根目錄到當(dāng)前文件夾(調(diào)用 nuget.exe 的位置或包含項目的文件夾)的路徑中的每個文件夾中找到的文件。例如,如果您在 c:\A\B\C 中調(diào)用命令,NuGet 將在 c:\ 中查找并加載配置文件,然后是 c:\A、c:\A\B,最后是 c:\A \B\C。
當(dāng) NuGet 在這些文件中找到設(shè)置時,將按如下方式應(yīng)用設(shè)置:
對于單項元素,NuGet 會將之前找到的值替換為相同的鍵。也就是說,與當(dāng)前文件夾或項目“最接近”的設(shè)置將覆蓋之前找到的任何其他設(shè)置。例如mac命令行怎么找的軟件位置,如果 . 存在于任何其他配置文件中,此設(shè)置將被覆蓋。對于集合元素(例如
)夕風(fēng)OCR圖文識別工具,NuGet 會將所有配置文件中的值組合成一個集合。當(dāng)存在于給定節(jié)點中時云脈ocr護照識別,NuGet 將忽略先前為該節(jié)點定義的配置值。
暗示
在項目存儲庫的根目錄中添加 nuget.file。這被認為是最佳實踐,因為它提高了可重復(fù)性并確保不同用戶具有相同的 NuGet 配置。
設(shè)置演練
假設(shè)在兩個單獨的驅(qū)動器上具有以下文件夾結(jié)構(gòu):
disk_drive_1
User
disk_drive_2
Project1
Source
Project2
Source
tmp
然后將有 4 個 NuGet。在以下位置具有給定內(nèi)容的文件。(此示例不包括計算機級文件mac命令行怎么找的軟件位置,其行為類似于用戶級文件。)
文件 A. 用戶級文件(%%\NuGet\NuGet. on mac/Linux, ~/./NuGet/NuGet. on Linux):
<?xml version="1.0" encoding="utf-8"?>
文件 B./NuGet.:
<?xml version="1.0" encoding="utf-8"?>
文件 C. //NuGet.:
<?xml version="1.0" encoding="utf-8"?>
檔案D。//NuGet.:
<?xml version="1.0" encoding="utf-8"?>
接下來,NuGet 將根據(jù)調(diào)用設(shè)置的位置按如下方式加載和應(yīng)用設(shè)置:
其他用戶范圍的配置
從版本 5.7 開始,NuGet 增加了對其他用戶范圍配置文件的支持。此更新允許第三方供應(yīng)商在不升級的情況下添加其他用戶配置文件。這些配置文件位于子文件夾內(nèi)的標準用戶范圍配置文件夾中。所有以 . 結(jié)尾的文件。要么 。會被考慮。標準工具無法編輯這些文件。
OS平臺的其他配置
%%\NuGet\\*.
mac/Linux
~/./NuGet//*. 或 ~/.nuget//*。
NuGet 默認文件
這 。文件用于指定安裝和更新包的包源,以及控制使用 nuget push 發(fā)布包的默認目標。因為管理員可以輕松地將一致的 .files 部署到開發(fā)人員和構(gòu)建機器(例如,使用組策略),他們可以確保組織中的每個人都使用正確的包源,而不是 .
重要的
.files 永遠不會導(dǎo)致開發(fā)人員的 NuGet 配置中的包源被刪除。即如果開發(fā)者使用過NuGet,也就是注冊了包源,這個包源在. 文件被創(chuàng)建。
還, ?;?NuGet 中的任何其他機制都不會阻止對包源的訪問,例如 . 如果組織希望阻止此類訪問,則必須通過防火墻等其他方式進行。
. 地點
下表根據(jù)目標操作系統(tǒng)進行描述。文件應(yīng)該存儲在哪里:
操作系統(tǒng)平臺。位置
2017 或 NuGet 4.x+:
2015 及更早版本或 NuGet 3.x 及更早版本:
mac/Linux
$(通常為 ~/.local/share 或 /usr/local/share,取決于操作系統(tǒng)版本)
的設(shè)置示例。和應(yīng)用
<?xml version="1.0" encoding="UTF-8"?>