Sdílet prostřednictvím


nuget.config Odkaz

Chování NuGet je řízeno nastavením v různých NuGet.Config nebo nuget.config souborech, jak je popsáno v běžných konfiguracích NuGet.

nuget.config je soubor XML obsahující uzel nejvyšší úrovně <configuration> , který pak obsahuje prvky oddílu popsané v tomto tématu. Každý oddíl obsahuje nula nebo více položek. Podívejte se na konfigurační soubor s příklady. Názvy nastavení nerozlišují malá a velká písmena a hodnoty můžou používat proměnné prostředí.

Tip

nuget.config Přidejte soubor do kořenového adresáře úložiště projektu. 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. Možná budete muset nakonfigurovat clear prvky tak, aby se nepoužádá žádná konfigurace specifická pro uživatele nebo počítač. Přečtěte si další informace o způsobu použití nastavení.

konfigurační oddíl

Obsahuje různá nastavení konfigurace, která lze nastavit pomocí nuget config příkazu.

dependencyVersion a repositoryPath platí pouze pro projekty používající packages.config. globalPackagesFolder platí pouze pro projekty používající formát PackageReference.

Key Hodnota
dependencyVersion (packages.config pouze) Výchozí DependencyVersion hodnota pro instalaci, obnovení a aktualizaci balíčku, pokud -DependencyVersion není přepínač zadán přímo. Tuto hodnotu používá také uživatelské rozhraní NuGet Správce balíčků. Hodnoty jsou Lowest, , HighestMinorHighestPatch, Highest.
globalPackagesFolder (pouze projekty využívající PackageReference) Umístění výchozí složky globálních balíčků. Výchozí hodnota je %userprofile%\.nuget\packages (Windows) nebo ~/.nuget/packages (Mac/Linux). Relativní cestu lze použít v souborech specifických pro nuget.config projekt. Toto nastavení je přepsáno proměnnou NUGET_PACKAGES prostředí, která má přednost.
repositoryPath (packages.config pouze) Umístění, ve kterém se mají instalovat balíčky NuGet místo výchozí $(Solutiondir)/packages složky. Relativní cestu lze použít v souborech specifických pro nuget.config projekt.
defaultPushSource Identifikuje adresu URL nebo cestu ke zdroji balíčku, která by se měla použít jako výchozí, pokud nejsou nalezeny žádné jiné zdroje balíčků pro operaci.
no_proxy http_proxy http_proxy.user http_proxy.password Nastavení proxy serveru, které se má použít při připojování ke zdrojům balíčků; http_proxy by měla být ve formátu http://<username>:<password>@<domain>. Hesla jsou šifrovaná a nelze je přidat ručně. Hodnota no_proxyje čárkami oddělený seznam domén, které obejití proxy serveru. Pro tyto hodnoty můžete také použít proměnné prostředí http_proxy a no_proxy. Další podrobnosti najdete v tématu Nastavení proxy serveru NuGet (skolima.blogspot.com).
maxHttpRequestsPerSource Řídí maximální počet paralelních požadavků odesílaných z NuGetu do každého zdroje balíčků pro řešení závislostí balíčku a stahování. Výchozí hodnota dotnet.exe je Int32.MaxValue odvozena z HttpClientHandler.MaxConnectionsPerServer vlastnosti. Toto nastavení nemá žádný vliv na dotnet.exeMac OS to, protože omezení je nastavené tak, aby 16 se zabránilo příliš velkému počtu otevřených souborů. Výchozí hodnota, na NuGet client tools které běží .NET Framework , například Visual Studio a nuget.exe je 64 zapnutá Windows a 1 zapnutá Mono. Výchozí hodnota pro Packages.config projekty stylu je nastavena na Environment.ProcessorCount. Konfigurace maxHttpRequestsPerSource vlastnosti na hodnotu menší než výchozí může mít vliv na výkon NuGetu.
signatureValidationMode Určuje režim ověřování použitý k ověření podpisů balíčku pro instalaci balíčku a obnovení. Hodnoty jsou accept, require. Výchozí hodnota acceptje .

Příklad:

<config>
    <add key="dependencyVersion" value="Highest" />
    <add key="globalPackagesFolder" value="c:\packages" />
    <add key="repositoryPath" value="c:\installed_packages" />
    <add key="http_proxy" value="http://company-squid:3128@contoso.com" />
    <add key="signatureValidationMode" value="require" />
    <add key="maxHttpRequestsPerSource" value="16" />
</config>

bindingRedirects section

Konfiguruje, jestli NuGet provádí automatické přesměrování vazeb při instalaci balíčku.

Key Hodnota
skip Logická hodnota označující, jestli se mají přeskakovat automatické přesměrování vazby. Výchozí hodnotou je hodnota false.

Příklad:

<bindingRedirects>
    <add key="skip" value="True" />
</bindingRedirects>

oddíl packageRestore

Řídí obnovení balíčku během sestavení.

Key Hodnota
enabled Logická hodnota označující, jestli NuGet může provést automatické obnovení. Proměnnou prostředí můžete také nastavit EnableNuGetPackageRestore s hodnotou True namísto nastavení tohoto klíče v konfiguračním souboru.
automatická Logická hodnota označující, jestli má NuGet kontrolovat chybějící balíčky během sestavení.

Příklad:

<packageRestore>
    <add key="enabled" value="true" />
    <add key="automatic" value="true" />
</packageRestore>

část řešení

Určuje, jestli packages je složka řešení součástí správy zdrojového kódu. Tato část funguje jenom v nuget.config souborech ve složce řešení.

Key Hodnota
disableSourceControlIntegration Logická hodnota označující, jestli se má složka balíčků při práci se správou zdrojového kódu ignorovat. Výchozí hodnota je false.

Příklad:

<solution>
    <add key="disableSourceControlIntegration" value="true" />
</solution>

Oddíly zdroje balíčků

Funkce packageSources, , packageSourceCredentials, activePackageSourcetrustedSignersapikeysdisabledPackageSources, a packageSourceMapping všechny spolupracují na konfiguraci fungování NuGet s úložišti balíčků během operací instalace, obnovení a aktualizace.

Příkaz nuget sources se obvykle používá ke správě těchto nastavení, s výjimkou apikeys toho, který se spravuje pomocí nuget setapikey příkazu a trustedSigners který se spravuje pomocí nuget trusted-signers příkazu.

Všimněte si, že zdrojová adresa URL pro nuget.org je https://api.nuget.org/v3/index.json.

packageSources

Zobrazí seznam všech známých zdrojů balíčků. Pořadí je ignorováno během operací obnovení a s libovolným projektem pomocí formátu PackageReference. NuGet respektuje pořadí zdrojů pro operace instalace a aktualizace s projekty používajícími packages.config.

Atribut XML Účel
Klíč (název pro přiřazení ke zdroji balíčku)
Hodnota Cesta nebo adresa URL zdroje balíčku.
protocolVersion Verze protokolu serveru NuGet, která se má použít. Aktuální verze je 3. Výchozí hodnota je verze 2, pokud neodkazuje na adresu URL zdroje balíčku končící .json (např. https://api.nuget.org/v3/index.json). Podporováno v NuGetu 3.0 nebo novějším. Další informace o protokolu verze 3 najdete v rozhraní API serveru NuGet.
allowInsecure Připojení ions Pokud není zadána hodnota false nebo není zadána, NuGet vygeneruje upozornění, pokud zdroj používá místo https protokol http. Pokud máte jistotu, že komunikace s tímto zdrojem nikdy nebude ohrožena útoky na zachycení, můžete nastavit hodnotu na true a potlačit upozornění. Podporováno v NuGetu 6.8 nebo novější.

Příklad:

<packageSources>
    <clear />    
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Contoso" value="https://contoso.com/packages/" />
    <add key="http-source" value="http://httpsourcetrusted/" allowInsecureConnections="true" />
    <add key="Test Source" value="c:\packages" />
</packageSources>

Poznámka:

Při použití rozhraní příkazového řádku můžete vyjádřit RestoreSources vlastnost MSBuild nebo--source (.NET CLI) | -Source (Rozhraní příkazového řádku NuGet) a přepsat definovanou <packageSources> v souboru NuGet.config.

Tip

Pokud <clear /> je pro daný uzel přítomen, NuGet ignoruje dříve definované hodnoty konfigurace pro daný uzel. Přečtěte si další informace o způsobu použití nastavení.

packageSourceCredentials

Ukládá uživatelská jména a hesla pro zdroje, obvykle zadané pomocí -username přepínačů a -password přepínačů nuget sources. Hesla se ve výchozím nastavení šifrují, pokud -storepasswordincleartext se tato možnost nepoužívá. Volitelně lze pomocí přepínače zadat -validauthenticationtypes platné typy ověřování.

Key Hodnota
username Uživatelské jméno zdroje ve formátu prostého textu. Poznámka: Proměnné prostředí lze použít pro lepší zabezpečení.
Heslo Šifrované heslo pro zdroj. Šifrovaná hesla jsou podporována jenom ve Windows a dešifrovat se dají jenom v případě použití na stejném počítači a prostřednictvím stejného uživatele jako původní šifrování.
cleartextpassword Nešifrované heslo pro zdroj. Poznámka: Proměnné prostředí lze použít pro lepší zabezpečení.
validauthenticationtypes Čárkami oddělený seznam platných typů ověřování pro tento zdroj. Tuto možnost nastavte, basic pokud server inzeruje protokol NTLM nebo Negotiate a vaše přihlašovací údaje musí být odeslány pomocí základního mechanismu, například při použití PAT s místním Serverem Azure DevOps. Mezi další platné hodnoty patří negotiate, kerberos, ntlma digest, ale tyto hodnoty pravděpodobně nebudou užitečné.

Upozorňující

Ukládání hesel ve formátu prostého textu se důrazně nedoporučuje. Upozorňujeme, že šifrovaná hesla jsou podporována pouze ve Windows. Kromě toho je možné je dešifrovat pouze v případě, že se používají na stejném počítači, a stejným uživatelem, který je původně zašifroval. Další informace o bezpečné správě přihlašovacích údajů najdete v osvědčených postupech zabezpečení pro využívání balíčků z privátních informačních kanálů.

Tip

Pokud se předá nešifrované heslo pro password chybovou zprávu Parametr je nesprávný, dojde k chybě.

Příklad:

V konfiguračním souboru <packageSourceCredentials> obsahuje element podřízené uzly pro každý použitelný název zdroje (mezery v názvu jsou nahrazeny _x0020_). To znamená, že pro zdroje s názvem Contoso a Test Source obsahuje konfigurační soubor při použití šifrovaných hesel následující:

<packageSourceCredentials>
    <Contoso>
        <add key="Username" value="user@contoso.com" />
        <add key="Password" value="..." />
    </Contoso>
    <Test_x0020_Source>
        <add key="Username" value="user" />
        <add key="Password" value="..." />
    </Test_x0020_Source>
</packageSourceCredentials>

Kromě toho je možné zadat platné metody ověřování.

<packageSourceCredentials>
    <Contoso>
        <add key="Username" value="user@contoso.com" />
        <add key="Password" value="..." />
        <add key="ValidAuthenticationTypes" value="basic" />
    </Contoso>
    <Test_x0020_Source>
        <add key="Username" value="user" />
        <add key="Password" value="..." />
        <add key="ValidAuthenticationTypes" value="basic, negotiate" />
    </Test_x0020_Source>
</packageSourceCredentials>

Při použití nešifrovaných hesel uložených v proměnné prostředí:

<packageSourceCredentials>
    <Contoso>
        <add key="Username" value="user@contoso.com" />
        <add key="ClearTextPassword" value="%ContosoPassword%" />
    </Contoso>
    <Test_x0020_Source>
        <add key="Username" value="user" />
        <add key="ClearTextPassword" value="%TestSourcePassword%" />
    </Test_x0020_Source>
</packageSourceCredentials>

Při použití nešifrovaných hesel:

Upozorňující

Ukládání hesel ve formátu prostého textu se důrazně nedoporučuje.

<packageSourceCredentials>
    <Contoso>
        <add key="Username" value="user@contoso.com" />
        <add key="ClearTextPassword" value="33f!!lloppa" />
    </Contoso>
    <Test_x0020_Source>
        <add key="Username" value="user" />
        <add key="ClearTextPassword" value="hal+9ooo_da!sY" />
    </Test_x0020_Source>
</packageSourceCredentials>

apikeys

Ukládá klíče pro zdroje, které používají ověřování pomocí klíče rozhraní API, jak je nastavené pomocí nuget setapikey příkazu.

Key Hodnota
(zdrojová adresa URL) Šifrovaný klíč rozhraní API.

Příklad:

<apikeys>
    <add key="https://MyRepo/ES/api/v2/package" value="encrypted_api_key" />
</apikeys>

disabledPackageSources

Identifikované aktuálně zakázané zdroje. Může být prázdný. Pokud nejsou v této části zakázané konkrétní zdroje, jsou povolené.

Key Hodnota
(název zdroje) Logická hodnota označující, jestli je zdroj zakázaný.

Příklad:

<disabledPackageSources>
    <add key="Contoso" value="true" />
</disabledPackageSources>

<!-- Empty list -->
<disabledPackageSources />

Ve výše uvedeném příkladu je zdroj Contoso balíčku zakázaný a nebude použit ke stažení nebo instalaci balíčků.

activePackageSource

(pouze 2.x; zastaralé ve verzi 3.x+)

Identifikuje aktuálně aktivní zdroj nebo označuje agregaci všech zdrojů.

Key Hodnota
(název zdroje) nebo All Pokud je klíčem název zdroje, hodnota je zdrojová cesta nebo adresa URL. Pokud Allby hodnota měla zkombinovat (Aggregate source) všechny zdroje balíčků, které nejsou jinak zakázané.

Příklad:

<activePackageSource>
    <!-- Only one active source-->
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />

    <!-- All non-disabled sources are active -->
    <add key="All" value="(Aggregate source)" />
</activePackageSource>

Oddíl trustedSigners

Ukládá důvěryhodné podepisující osoby používané k povolení balíčku při instalaci nebo obnovení. Tento seznam nemůže být prázdný, pokud uživatel nastaví signatureValidationMode hodnotu require.

Tuto část je možné aktualizovat pomocí nuget trusted-signers příkazu.

Schéma:

Důvěryhodný podepisující znak má kolekci certificate položek, které zařadí všechny certifikáty, které identifikují daného podepisujícího. Důvěryhodným podepisovačem může být znak nebo AuthorRepositoryznak .

Důvěryhodné úložiště také určuje serviceIndex úložiště (které musí být platným https identifikátorem URI) a volitelně může zadat seznam oddělený středníkem, aby bylo možné omezit ještě více důvěryhodných uživatelů z tohoto konkrétního owners úložiště.

Podporované hashovací algoritmy používané pro otisk certifikátu jsou SHA256a SHA384SHA512.

certificate Pokud se při allowUntrustedRoottrue vytváření řetězu certifikátů při vytváření řetězu certifikátů v rámci ověření podpisu povoluje řetěz zadaný certifikát jako daný certifikát zřetězovat do nedůvěryhodného kořenového adresáře.

Příklad:

<trustedSigners>
    <author name="microsoft">
        <certificate fingerprint="3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <certificate fingerprint="AA12DA22A49BCE7D5C1AE64CC1F3D892F150DA76140F210ABD2CBFFCA2C18A27" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <certificate fingerprint="566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
    </author>
    <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
        <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B46760709CBEEC6F4219AA6157D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <certificate fingerprint="5A2901D6ADA3D18260B9C6DFE2133C95D74B9EEF6AE0E5DC334C8454D1477DF4" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <certificate fingerprint="1F4B311D9ACC115C8DC8018B5A49E00FCE6DA8E2855F9F014CA6F34570BC482D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />        
        <owners>microsoft;aspnet;nuget</owners>
    </repository>
</trustedSigners>

oddíl fallbackPackageFolders

(3,5+) Poskytuje způsob, jak předinstalovat balíčky, aby se při nalezení balíčku v náhradních složkách nepovedlo provést žádnou práci. Složky náhradního balíčku mají stejnou strukturu složek a souborů jako globální složka balíčku: .nupkg je k dispozici a všechny soubory se extrahují.

Vyhledávací logika pro tuto konfiguraci je:

  • Vyhledejte globální složku balíčku a zjistěte, jestli je balíček nebo verze již stažena.

  • Vyhledejte záložní složky pro shodu balíčku nebo verze.

Pokud je některý z vyhledávání úspěšný, není nutné stáhnout.

Pokud se shoda nenajde, NuGet zkontroluje zdroje souborů a pak zdroje HTTP a pak stáhne balíčky.

Key Hodnota
(název záložní složky) Cesta k záložní složce

Příklad:

<fallbackPackageFolders>
   <add key="XYZ Offline Packages" value="C:\somePath\someFolder\"/>
</fallbackPackageFolders>

Oddíl mapování zdroje balíčků

Tato packageSourceMapping část obsahuje podrobnosti, které pomáhají operacím balíčků NuGet určit, odkud se má stáhnout ID balíčku.

Tento oddíl je teď možné spravovat jenom ručně.

packageSourceMapping Oddíl může obsahovat packageSource pouze oddíly.

packageSource

Dílčí část oddílu packageSourceMapping . Obsahuje mapování, které nuGetu pomůže určit, jestli se má zdroj zvážit pro stažení balíčku, který zajímá.

Klíč
Název zdroje balíčku deklarovaného v packageSources části Klíč musí přesně odpovídat klíči zdroje balíčku.

Oddíly packageSource , packageSourceMapping pod keykteré jsou jednoznačně identifikovány .

package

Je package součástí oddílu packageSource .

Vzor
Vzor definovaný syntaxí mapování zdroje balíčků.

Příklad:

<packageSourceMapping>
  <packageSource key="contoso.com">
    <package pattern="Contoso.*" />
  </packageSource>
</packageSourceMapping>

oddíl packageManagement

Nastaví výchozí formát správy balíčků, buď packages.config , nebo PackageReference. Projekty ve stylu sady SDK vždy používají PackageReference.

Key Hodnota
format Logická hodnota označující výchozí formát správy balíčků. Pokud 1, formát je PackageReference. Pokud 0, formát je packages.config.
deaktivováno Logická hodnota označující, zda se má zobrazit výzva k výběru výchozího formátu balíčku při první instalaci balíčku. False skryje výzvu.

Příklad:

<packageManagement>
   <add key="format" value="1" />
   <add key="disabled" value="False" />
</packageManagement>

Tip

Pokud <clear /> je pro daný uzel přítomen, NuGet ignoruje dříve definované hodnoty konfigurace pro daný uzel. Přečtěte si další informace o způsobu použití nastavení.

Použití proměnných prostředí

Proměnné prostředí můžete použít v nuget.config hodnotách (NuGet 3.4+) k použití nastavení za běhu.

Pokud HOME je například proměnná prostředí ve Windows nastavena na c:\users\username, hodnota v konfiguračním %HOME%\NuGetRepository souboru se přeloží na c:\users\username\NuGetRepository.

Všimněte si, že musíte použít proměnné prostředí ve stylu Windows (začíná a končí %) i v Mac/Linuxu. Při použití $HOME/NuGetRepository v konfiguračním souboru se problém nevyřeší. V systému Mac/Linux se hodnota %HOME%/NuGetRepository přeloží na /home/myStuff/NuGetRepository.

Pokud se proměnná prostředí nenajde, NuGet použije hodnotu literálu z konfiguračního souboru. Například %MY_UNDEFINED_VAR%/NuGetRepository se přeloží jako path/to/current_working_dir/$MY_UNDEFINED_VAR/NuGetRepository

Následující tabulka ukazuje syntaxi proměnné prostředí a oddělovač cest pro soubory NuGet.Config.

NuGet.Config Podpora proměnných prostředí

Syntaxe Oddělovač dirů Windows nuget.exe Windows dotnet.exe Mac nuget.exe (v Mono) Mac dotnet.exe
%MY_VAR% / Ano Ano Ano Ano
%MY_VAR% \ Ano Ano No No
$MY_VAR / No No No No
$MY_VAR \ No No No Ne

Příklad konfiguračního souboru

Níže je příklad nuget.config souboru, který znázorňuje řadu nastavení, včetně volitelných:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <!--
            Used to specify the default location to expand packages.
            See: nuget.exe help install
            See: nuget.exe help update

            In this example, %PACKAGEHOME% is an environment variable.
            This syntax works on Windows/Mac/Linux
        -->
        <add key="repositoryPath" value="%PACKAGEHOME%/External" />

        <!--
            Used to specify default source for the push command.
            See: nuget.exe help push
        -->

        <add key="defaultPushSource" value="https://MyRepo/ES/api/v2/package" />

        <!-- Proxy settings -->
        <add key="http_proxy" value="host" />
        <add key="http_proxy.user" value="username" />
        <add key="http_proxy.password" value="encrypted_password" />
    </config>

    <packageRestore>
        <!-- Allow NuGet to download missing packages -->
        <add key="enabled" value="True" />

        <!-- Automatically check for missing packages during build in Visual Studio -->
        <add key="automatic" value="True" />
    </packageRestore>

    <!--
        Used to specify the default Sources for list, install and update.
        See: nuget.exe help list
        See: nuget.exe help install
        See: nuget.exe help update
    -->
    <packageSources>
        <clear />
        <add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
        <add key="MyRepo - ES" value="https://MyRepo/ES/nuget" />
    </packageSources>

    <!-- Used to store credentials -->
    <packageSourceCredentials />

    <!-- Used to disable package sources  -->
    <disabledPackageSources />

    <!--
        Used to specify default API key associated with sources.
        See: nuget.exe help setApiKey
        See: nuget.exe help push
        See: nuget.exe help mirror
    -->
    <apikeys>
        <add key="https://MyRepo/ES/api/v2/package" value="encrypted_api_key" />
    </apikeys>

    <!--
        Used to specify trusted signers to allow during signature verification.
        See: nuget.exe help trusted-signers
    -->
    <trustedSigners>
        <author name="microsoft">
            <certificate fingerprint="3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <certificate fingerprint="AA12DA22A49BCE7D5C1AE64CC1F3D892F150DA76140F210ABD2CBFFCA2C18A27" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <certificate fingerprint="566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        </author>
        <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
            <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B46760709CBEEC6F4219AA6157D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <certificate fingerprint="5A2901D6ADA3D18260B9C6DFE2133C95D74B9EEF6AE0E5DC334C8454D1477DF4" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <certificate fingerprint="1F4B311D9ACC115C8DC8018B5A49E00FCE6DA8E2855F9F014CA6F34570BC482D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <owners>microsoft;aspnet;nuget</owners>
        </repository>
    </trustedSigners>
</configuration>