Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Chování NuGetu je řízeno kumulovanými nastaveními v jednom nebo více souborech konfigurace (XML), které mohou existovat v řešení – (projekt, pokud se nepoužívá žádné řešení), uživatelské a počítačové úrovně.
Umístění a použití konfiguračních souborů
| Scope |
NuGet.Config umístění souboru |
Description |
|---|---|---|
| Solution | Aktuální složka (také nazývaná jako složka řešení) nebo jakákoli složka až k kořenovému adresáři jednotky. | Ve složce řešení platí nastavení pro všechny projekty v podsložkách. Všimněte si, že pokud je konfigurační soubor umístěný ve složce projektu, nemá na tento projekt žádný vliv. Při obnovování projektu na příkazovém řádku se adresář projektu považuje za adresář řešení, což může vést k rozdílům v chování při obnovování projektu vs. |
| Uživatel |
Windows:%appdata%\NuGet\NuGet.ConfigMac/Linux: ~/.config/NuGet/NuGet.Config nebo ~/.nuget/NuGet/NuGet.Config (liší se podle nástrojů) Na všech platformách se podporují další konfigurace. Tyto konfigurace nelze upravit pomocí nástrojů. Windows: %appdata%\NuGet\config\*.Config Mac/Linux: ~/.config/NuGet/config/*.config nebo ~/.nuget/config/*.config |
Nastavení platí pro všechny operace, ale jsou přepsána jakýmikoli nastaveními na úrovni řešení. |
| Computer |
Windows:%ProgramFiles(x86)%\NuGet\ConfigMac/Linux: /etc/opt/NuGet/Config (Linux) nebo /Library/Application Support (Mac) ve výchozím nastavení. Pokud $NUGET_COMMON_APPLICATION_DATA není null ani prázdný, pak $NUGET_COMMON_APPLICATION_DATA/NuGet/Config místo toho |
Nastavení platí pro všechny operace na počítači, ale jsou přepsána nastaveními na úrovni uživatele nebo řešení systému. |
Poznámka:
V systému Mac/Linux se umístění konfiguračního souboru uživatele liší podle nástrojů. .NET CLI používá ~/.nuget/NuGet složku, zatímco Mono používá ~/.config/NuGet složku.
V systému Mac/Linux se umístění konfiguračního souboru na úrovni uživatele liší podle nástrojů.
V systému Mac/Linux se umístění konfiguračního souboru uživatele liší podle nástrojů.
Většina uživatelů používá nástroje, které hledají konfigurační soubor uživatele ve ~/.nuget/NuGet složce.
Tyto další nástroje vyhledá konfigurační soubor uživatele ve ~/.config/NuGet složce:
- Mono
- NuGet.exe
- Visual Studio 2019 pro Mac (a starší verze)
- Visual Studio 2022 pro Mac (a novější verze) pouze při práci na klasických projektech Mono.
Pokud nástroje, které používáte, zahrnují obě umístění, zvažte jejich sloučení pomocí následujících kroků, abyste mohli pracovat pouze s jedním konfiguračním souborem na úrovni uživatele:
- Zkontrolujte obsah dvou konfiguračních souborů na úrovni uživatele a ponechte ten, který chcete mít ve
~/.nuget/NuGetsložce. - Nastavit symbolický odkaz z
~/.nuget/NuGetna~/.config/NuGet. Například spustit příkaz bash:ln -s ~/.nuget/NuGet ~/.config/NuGet.
Poznámky ke starším verzím NuGetu:
- NuGet 3.3 a starší používal
.nugetsložku pro nastavení celého řešení. Tato složka se v NuGetu 3.4+nepoužívá. - Pro NuGet 2.6 až 3.x byl konfigurační soubor na úrovni počítače ve Windows umístěn v
%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]\NuGet.Config, kde{IDE}může býtVisualStudio,{Version}byl verzí sady Visual Studio, například14.0, a{SKU}je buďCommunity,ProneboEnterprise. Pokud chcete migrovat nastavení na NuGet 4.0+, jednoduše zkopírujte konfigurační soubor do%ProgramFiles(x86)%\NuGet\Configsouboru . Na Linuxu bylo toto předchozí umístění/etc/opt, a na Macu/Library/Application Support.
Změna nastavení konfigurace
Soubor NuGet.Config je jednoduchý textový soubor XML obsahující páry klíč/hodnota, jak je popsáno v tématu Nastavení konfigurace NuGet .
Nastavení se spravují pomocí konfiguračního příkazu Rozhraní příkazového řádku NuGet:
- Ve výchozím nastavení se změny v konfiguračním souboru na úrovni uživatele provádějí. (V systému Mac/Linux se umístění konfiguračního souboru na úrovni uživatele liší podle nástrojů)
- Pokud chcete změnit nastavení v jiném souboru, použijte
-configFilepřepínač. V takovém případě mohou soubory používat libovolný název souboru. - Klíče jsou vždy citlivé na velikost písmen.
- Pro změnu nastavení v souboru nastavení na úrovni počítače je vyžadováno zvýšení úrovně oprávnění.
Výstraha
I když můžete soubor upravit v libovolném textovém editoru, NuGet (v3.4.3 a novější) bezobslužně ignoruje celý konfigurační soubor, pokud obsahuje poškozený kód XML (neshodované značky, neplatné uvozovky atd.). Proto je vhodnější spravovat nastavení pomocí nuget config.
Nastavení hodnoty
Windows:
# Set globalPackagesFolder in the user-level config file
dotnet nuget config set globalPackagesFolder "C:\packages"
# Set repositoryPath (available for packages.config only) in the user-level config file
dotnet nuget config set repositoryPath "C:\packages"
# Set repositoryPath in solution-level files
dotnet nuget config set repositoryPath "C:\packages" --configfile "C:\my.config"
dotnet nuget config set repositoryPath "c:\packages" --configfile "..\..\my.config"
# Set repositoryPath in the computer-level file (requires elevation)
dotnet nuget config set repositoryPath "c:\packages" --configfile "%appdata%\NuGet\NuGet.Config"
Mac/Linux:
# Set globalPackagesFolder in the user-level config file
dotnet nuget config set globalPackagesFolder /home/packages
# Set repositoryPath (available for packages.config only) in the user-level config file
dotnet nuget config set repositoryPath /home/packages
# Set repositoryPath in solution-level files
dotnet nuget config set repositoryPath /home/projects/packages --configfile /home/my.Config
dotnet nuget config set repositoryPath /home/packages --configfile home/myApp/NuGet.Config
# Set repositoryPath in the computer-level file (requires elevation)
dotnet nuget config set repositoryPath /home/packages --configfile $XDG_DATA_HOME/NuGet.Config
Poznámka:
V NuGetu 3.4 a novějším můžete použít proměnné prostředí v libovolné hodnotě, například v repositoryPath=%PACKAGEHOME% (Windows) a repositoryPath=$PACKAGEHOME (Mac/Linux).
Odebrání hodnoty
Pokud chcete odebrat hodnotu, zadejte klíč s prázdnou hodnotou.
# Windows
nuget config -set repositoryPath= -configfile c:\my.Config
# Mac/Linux
nuget config -set repositoryPath= -configfile /home/my.Config
Vytvoření nového konfiguračního souboru
Pomocí rozhraní příkazového řádku .NET vytvořte výchozí nuget.config spuštěním dotnet new nugetconfigpříkazu .
Další informace najdete v tématu příkazy rozhraní příkazového řádku dotnet.
Případně ručně zkopírujte následující šablonu do nového souboru a pak použijte nuget config -configFile <filename> k nastavení hodnot:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
Jak se použijí nastavení
Několik NuGet.Config souborů umožňuje ukládat nastavení do různých umístění, aby se použilo pro jedno řešení nebo skupinu řešení.
Tato nastavení se souhrnně vztahují na jakoukoli operaci NuGet vyvolanou z příkazového řádku nebo z Visual Studio, s nastavením, které jsou "nejblíže" řešení nebo aktuální složce, která mají přednost.
Pokud se nástroj příkazového řádku používá v souboru projektu místo souboru řešení, použije se adresář projektu jako "adresář řešení", což může vést k nekonzistentnímu chování, pokud je NuGet.Config soubor v podadresáři souboru řešení.
Konkrétně platí, že pokud není konfigurační soubor explicitně zadán na příkazovém řádku, NuGet načte nastavení z různých konfiguračních souborů v následujícím pořadí:
- (Méně časté) Soubor
NuGetDefaults.Config, který obsahuje nastavení související pouze se zdroji balíčků. - Soubor na úrovni počítače.
- Soubor na úrovni uživatele.
- Soubory nalezené v každé složce v cestě od kořenového adresáře jednotky k aktuální složce (kde je
nuget.exevyvoláno nebo ve složce obsahující řešení sady Visual Studio). Pokud je například vyvolánc:\A\B\Cpříkaz, NuGet hledá a načte konfigurační soubory vc:\, pakc:\A, pakc:\A\B, a nakonecc:\A\B\C.
Pokud je konfigurační soubor explicitně zadán na příkazovém řádku, nebo nuget -configFile my.configdotnet restore --configfile my.configse použijí pouze nastavení ze zadaného souboru.
Když NuGet najde nastavení v těchto souborech, použijí se takto:
- U elementů s jednou položkou nuGet nahradil všechny dříve nalezené hodnoty stejného klíče. To znamená, že nastavení, která jsou k aktuální složce nebo řešení nejblíže, přepíší všechny ostatní nalezené dříve. Například nastavení
defaultPushSourceje přepsánoNuGetDefaults.Configpokud existuje v jiném konfiguračním souboru. - Pro prvky kolekce (například
<packageSources>) NuGet kombinuje hodnoty ze všech konfiguračních souborů do jedné kolekce. - Pokud
<clear />je pro daný uzel přítomen, NuGet ignoruje dříve definované hodnoty konfigurace pro daný uzel.
Návod
nuget.config Přidejte soubor do kořenového adresáře úložiště řešení. To je považováno za osvědčený postup, protože podporuje opakovatelnost a zajišťuje, že různí uživatelé mají stejnou konfiguraci NuGet.
Návod k nastavení
Řekněme, že máte následující strukturu složek na dvou samostatných jednotkách:
disk_drive_1
User
disk_drive_2
Project1
Source
Project2
Source
tmp
Pak máte čtyři NuGet.Config soubory v následujících umístěních s daným obsahem. (Soubor na úrovni počítače není v tomto příkladu zahrnutý, ale chová se podobně jako soubor na úrovni uživatele.)
File A. User-level file, (%appdata%\NuGet\NuGet.Config on Windows, ~/.config/NuGet/NuGet.Config on Mac/Linux):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
Soubor B: disk_drive_2/NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="disk_drive_2/tmp" />
</config>
<packageRestore>
<add key="enabled" value="True" />
</packageRestore>
</configuration>
Soubor C. disk_drive_2/Project1/NuGet.Config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="External/Packages" />
<add key="defaultPushSource" value="https://MyPrivateRepo/ES/api/v2/package" />
</config>
<packageSources>
<clear /> <!-- ensure only the sources defined below are used -->
<add key="MyPrivateRepo - ES" value="https://MyPrivateRepo/ES/nuget" />
</packageSources>
</configuration>
Soubor D. disk_drive_2/Project2/NuGet.Config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!-- Add this repository to the list of available repositories -->
<add key="MyPrivateRepo - DQ" value="https://MyPrivateRepo/DQ/nuget" />
</packageSources>
</configuration>
NuGet pak načte a použije nastavení následujícím způsobem v závislosti na tom, kde se vyvolá:
Vyvoláno z
disk_drive_1/users: Používá se pouze výchozí úložiště uvedené v konfiguračním souboru na úrovni uživatele (A), protože se jedná o jediný soubor, nadisk_drive_1který se nachází .Vyvoláno z
disk_drive_2/nebodisk_drive_/tmp: Soubor na úrovni uživatele (A) se nejprve načte, pak NuGet přejde do kořenovéhodisk_drive_2adresáře a najde soubor (B). NuGet také hledá konfigurační soubor,/tmpale nenajde ho. Výsledkem je, že se použije výchozí úložištěnuget.org, povolí se obnovení balíčků a balíčky se rozbalí vdisk_drive_2/tmp.Vyvoláno z
disk_drive_2/Project1nebodisk_drive_2/Project1/Source: Soubor na úrovni uživatele (A) se nejprve načte, pak NuGet načte soubor (B) z kořenovéhodisk_drive_2adresáře a potom soubor (C). Nastavení v (C) mají přednost před těmi v (B) a (A), takže cesta, kam se balíčky nainstalují, jedisk_drive_2/Project1/External/Packagesmístodisk_drive_2/tmp. Také proto, že (C) vymaže<packageSources>, není nuget.org k dispozici jako zdroj, zbývá pouzehttps://MyPrivateRepo/ES/nuget.Vyvoláno z
disk_drive_2/Project2nebodisk_drive_2/Project2/Source: Soubor na úrovni uživatele (A) se nejprve načte za souborem (B) a souborem (D). Vzhledem k tomu, žepackageSourcesnení vymazáno, jsou oběnuget.orgahttps://MyPrivateRepo/DQ/nugetk dispozici jako zdroje. Balíčky se rozbalídisk_drive_2/tmp, jak je uvedeno v (B).
Další uživatelská konfigurace
Od verze 5.7 přidal NuGet podporu dalších konfiguračních souborů pro celé uživatele. To umožňuje dodavatelům třetích stran přidávat další konfigurační soubory uživatelů bez zvýšení oprávnění.
Tyto konfigurační soubory se nacházejí ve standardní konfigurační složce uživatele v podsložce config.
Všechny soubory končící .config nebo .Config budou brány v úvahu.
Tyto soubory nelze upravovat standardními nástroji.
| Platforma operačního systému | Další konfigurace |
|---|---|
| Windows | %appdata%\NuGet\config\*.Config |
| Mac/Linux |
~/.config/NuGet/config/*.config nebo ~/.nuget/config/*.config |
Výchozí soubor NuGet
NuGetDefaults.Config je neobvyklý a může jen určit zdroje balíčků, ze kterých se balíčky instalují a aktualizují, nebo nastavit výchozí cíl pro publikování balíčků s nuget push.
Vzhledem k tomu, že správci můžou pohodlně (pomocí zásad skupiny) nasazovat konzistentní NuGetDefaults.Config soubory pro vývojáře a sestavování počítačů, můžou zajistit, aby všichni uživatelé v organizaci používali konzistentní zdroje balíčků bez ohledu na to, jestli to zahrnuje nuget.org.
Důležité
Soubor NuGetDefaults.Config nikdy nezpůsobí odebrání zdroje balíčku z konfigurace NuGet vývojáře. To znamená, že pokud už vývojář použil NuGet, a proto má zaregistrovaný zdroj balíčku nuget.org, po vytvoření NuGetDefaults.Config souboru se neodebere.
Kromě toho ani NuGetDefaults.Config žádný jiný mechanismus v NuGetu nemůže zabránit přístupu ke zdrojům balíčků, jako je nuget.org. Pokud chce organizace takový přístup blokovat, musí k tomu použít jiné prostředky, jako jsou brány firewall.
NuGetDefaults.Config umístění
Následující tabulka popisuje, kam NuGetDefaults.Config se má soubor uložit v závislosti na cílovém operačním systému:
| Platforma operačního systému |
NuGetDefaults.Config Umístění |
|---|---|
| Windows |
Visual Studio 2017 nebo NuGet 4.x+:%ProgramFiles(x86)%\NuGet Visual Studio 2015 a starší nebo NuGet 3.x a starší: %PROGRAMDATA%\NuGet |
| Mac/Linux |
$XDG_DATA_HOME (obvykle ~/.local/share nebo /usr/local/sharev závislosti na distribuci operačního systému) |
Nastavení NuGetDefaults.Config
packageSources: Tato kolekce má stejný význam jakopackageSourcesv běžných konfiguračních souborech a určuje výchozí zdroje. NuGet používá zdroje v pořadí při instalaci nebo aktualizaci balíčků v projektech pomocípackages.configformátu správy. Pro projekty používající formát PackageReference používá NuGet nejprve místní zdroje, pak zdroje v síťových sdílených složkách, pak zdroje HTTP bez ohledu na pořadí v konfiguračních souborech. NuGet vždy ignoruje pořadí zdrojů při operacích obnovy.disabledPackageSources: Tato kolekce má stejný význam jako vNuGet.Configsouborech, kde je každý ovlivněný zdroj uveden podle názvu atrue/falsehodnota označující, jestli je zakázaný. To umožňuje, aby název zdroje a adresa URL zůstaly vepackageSourcesbez toho, že by byly výchozím nastavením zapnuty. Jednotliví vývojáři pak můžou zdroj znovu povolit tak, že nastaví hodnotu zdroje dofalsejinýchNuGet.Configsouborů, aniž by museli znovu najít správnou adresu URL. To je také užitečné, když vývojářům poskytnete úplný seznam interních zdrojových adres URL pro organizaci a ve výchozím nastavení povolíte jenom zdroj jednotlivých týmů.defaultPushSource: určuje výchozí cíl pronuget pushoperace, přepisující vestavěné výchozí nastavenínuget.org. Správci mohou nasadit toto nastavení, aby se zabránilo náhodnému publikování interních balíčků na veřejnostnuget.org, protože vývojáři musí použítnuget push -Sourcek publikování nanuget.org.
Příklad NuGetDefaults.Config a aplikace
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- defaultPushSource key works like the 'defaultPushSource' key of NuGet.Config files. -->
<!-- This can be used by administrators to prevent accidental publishing of packages to nuget.org. -->
<config>
<add key="defaultPushSource" value="https://contoso.com/packages/" />
</config>
<!-- Default Package Sources; works like the 'packageSources' section of NuGet.Config files. -->
<!-- This collection cannot be deleted or modified but can be disabled/enabled by users. -->
<packageSources>
<add key="Contoso Package Source" value="https://contoso.com/packages/" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<!-- Default Package Sources that are disabled by default. -->
<!-- Works like the 'disabledPackageSources' section of NuGet.Config files. -->
<!-- Sources cannot be modified or deleted either but can be enabled/disabled by users. -->
<disabledPackageSources>
<add key="nuget.org" value="true" />
</disabledPackageSources>
</configuration>