nuget.config Riferimento

Il comportamento di NuGet è controllato dalle impostazioni in file o nuget.config diversiNuGet.Config, come descritto in Configurazioni NuGet comuni.

nuget.config è un file XML contenente un nodo <configuration> di livello superiore, che contiene a sua volta gli elementi per le sezioni descritte in questo argomento. Ogni sezione contiene zero o più elementi. Vedere il file di configurazione di esempio. Per i nomi delle impostazioni non viene fatta distinzione tra maiuscole e minuscole e per i valori si possono usare variabili di ambiente.

Suggerimento

Aggiungere un nuget.config file nella radice del repository del progetto. Questa procedura è considerata una procedura consigliata perché promuove la ripetibilità e garantisce che diversi utenti abbiano la stessa configurazione NuGet. Potrebbe essere necessario configurare clear gli elementi per assicurarsi che non venga applicata alcuna configurazione specifica dell'utente o del computer. Altre informazioni su come vengono applicate le impostazioni.

Sezione config

Contiene varie impostazioni di configurazione, che possono essere impostate con il comando nuget config.

dependencyVersion e repositoryPath si applicano solo ai progetti che usano packages.config. globalPackagesFolder si applica solo ai progetti che usano il formato PackageReference.

Chiave valore
dependencyVersion (solo packages.config) Valore DependencyVersion predefinito per l'installazione, il ripristino e l'aggiornamento del pacchetto, quando non viene specificata direttamente l'opzione -DependencyVersion. Questo valore viene usato anche dall'interfaccia utente di Gestione pacchetti NuGet. I valori sono Lowest, HighestPatch, HighestMinor, Highest.
globalPackagesFolder (progetti che usano solo PackageReference) Percorso della cartella dei pacchetti globale predefinita. L'impostazione predefinita è %userprofile%\.nuget\packages (Windows) o ~/.nuget/packages (Mac/Linux). È possibile usare un percorso relativo nei file nuget.config specifici del progetto. Questa impostazione viene sostituita dalla NUGET_PACKAGES variabile di ambiente, che ha la precedenza.
repositoryPath (solo packages.config) Percorso in cui installare i pacchetti NuGet invece della cartella $(Solutiondir)/packages predefinita. È possibile usare un percorso relativo nei file nuget.config specifici del progetto.
defaultPushSource Identifica l'URL o il percorso dell'origine del pacchetto che deve essere usato come impostazione predefinita se non vengono trovate altre origini di pacchetti per un'operazione.
http_proxy http_proxy.user http_proxy.password no_proxy Impostazioni del proxy da usare per la connessione a origini di pacchetti. http_proxy deve essere nel formato http://<username>:<password>@<domain>. Le password vengono crittografate e non possono essere aggiunte manualmente. Per no_proxy, il valore è un elenco delimitato da virgole di domini per il bypass del server proxy. In alternativa, è possibile usare le variabili di ambiente http_proxy e no_proxy per questi valori. Per altri dettagli, vedere NuGet proxy settings (Impostazioni del proxy NuGet) (skolima.blogspot.com).
maxHttpRequestsPerSource Controlla il numero massimo di richieste parallele inviate da NuGet a ogni origine del pacchetto per la risoluzione e i download delle dipendenze del pacchetto. Il valore predefinito su dotnet.exe è Int32.MaxValue derivato dalla HttpClientHandler.MaxConnectionsPerServer proprietà . Questa impostazione non ha alcun impatto su dotnet.exe perché Mac OS il limite di limitazione è impostato per 16 evitare troppi errori di file aperti. Il valore predefinito per NuGet client tools che viene eseguito su .NET Framework , ad esempio Visual Studio e nuget.exe è 64 su Windows e 1 su Mono. Il valore predefinito per Packages.config i progetti di stile è impostato su Environment.ProcessorCount. La configurazione della maxHttpRequestsPerSource proprietà su un valore minore del valore predefinito potrebbe influire sulle prestazioni di NuGet.
signatureValidationMode Specifica la modalità di convalida utilizzata per verificare le firme dei pacchetti per l'installazione e il ripristino del pacchetto. I valori sono accept, require. Il valore predefinito è accept.

Esempio:

<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>

Sezione bindingRedirects

Specifica se NuGet esegue o meno i reindirizzamenti di binding automatici quando viene installato un pacchetto.

Chiave valore
skip Valore booleano che indica se ignorare i reindirizzamenti di binding automatici. L’impostazione predefinita è false.

Esempio:

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

Sezione packageRestore

Controlla il ripristino dei pacchetti durante le compilazioni.

Chiave valore
Enabled Valore booleano che indica se NuGet può eseguire il ripristino automatico. È anche possibile impostare la variabile di ambiente EnableNuGetPackageRestore con il valore True invece di impostare questa chiave nel file di configurazione.
automatic Valore booleano che indica se NuGet deve controllare se mancano pacchetti durante la compilazione.

Esempio:

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

Sezione solution

Controlla se la cartella packages di una soluzione è inclusa nel controllo del codice sorgente. Questa sezione funziona solo nei file nuget.config in una cartella della soluzione.

Chiave valore
disableSourceControlIntegration Valore booleano che indica se ignorare la cartella dei pacchetti quando si utilizza il controllo del codice sorgente. Il valore predefinito è false.

Esempio:

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

Sezioni per le origini dei pacchetti

Gli packageSourcesoggetti , apikeysdisabledPackageSourcestrustedSignerspackageSourceCredentialsactivePackageSourcee packageSourceMapping interagiscono tutti per configurare il funzionamento di NuGet con i repository di pacchetti durante le operazioni di installazione, ripristino e aggiornamento.

Il nuget sources comando viene in genere usato per gestire queste impostazioni, ad eccezione apikeys del quale viene gestito tramite il nuget setapikey comando e trustedSigners gestito usando il nuget trusted-signers comando .

Si noti che l'URL di origine di nuget.org è https://api.nuget.org/v3/index.json.

packageSources

Elenca tutte le origini di pacchetti note. L'ordine viene ignorato durante le operazioni di ripristino e con qualsiasi progetto usando il formato PackageReference. NuGet rispetta l'ordine delle origini per le operazioni di installazione e aggiornamento con i progetti che usano packages.config.

Attributo XML Scopo
Chiave (nome da assegnare all'origine di pacchetti)
valore Percorso o URL dell'origine di pacchetti.
protocolVersion Versione del protocollo del server NuGet da usare. La versione corrente è "3". L'impostazione predefinita è la versione "2" quando non punta a un URL di origine del pacchetto che termina .json (ad esempio https://api.nuget.org/v3/index.json, ). Supportato in NuGet 3.0+. Per altre informazioni sul protocollo versione 3, vedere API server NuGet.
allowInsecure Connessione ions Se false o non specificato, NuGet genererà un avviso quando l'origine usa http, anziché https. Se si è certi che la comunicazione con questa origine non sarà mai a rischio di attacchi di intercettazione, è possibile impostare il valore su true per eliminare l'avviso. Supportato in NuGet 6.8+.

Esempio:

<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>

Nota

Quando si usa l'interfaccia della riga di comando, è possibile esprimere una RestoreSources proprietà MSBuild o--source (interfaccia della riga di comando di .NET) | -Source(interfaccia della riga di comando NuGet) per eseguire l'override dell'oggetto <packageSources> definito in NuGet.config.

Suggerimento

Quando <clear /> è presente per un determinato nodo, NuGet ignora i valori di configurazione definiti in precedenza per tale nodo. Altre informazioni su come vengono applicate le impostazioni.

packageSourceCredentials

Archivia i nomi utente e le password per le origini, in genere specificati con le opzioni -username e -password con nuget sources. Le password vengono crittografate per impostazione predefinita, a meno che non venga usata anche l'opzione -storepasswordincleartext. Facoltativamente, è possibile specificare tipi di autenticazione validi con l'opzione -validauthenticationtypes .

Chiave valore
username Nome utente per l'origine in testo normale. Nota: le variabili di ambiente possono essere usate per migliorare la sicurezza.
password Password crittografata per l'origine. Le password crittografate sono supportate solo in Windows e possono essere decrittografate solo se usate nello stesso computer e tramite lo stesso utente della crittografia originale.
cleartextpassword Password non crittografata per l'origine. Nota: le variabili di ambiente possono essere usate per migliorare la sicurezza.
validauthenticationtypes Elenco delimitato da virgole di tipi di autenticazione validi per questa origine. Impostare questa opzione su basic se il server annuncia NTLM o Negotiate e le credenziali devono essere inviate usando il meccanismo Basic, ad esempio quando si usa un token di accesso personale con Azure DevOps Server locale. Altri valori validi includono negotiate, kerberos, ntlm e digest, ma è improbabile che questi valori siano utili.

Avviso

L'archiviazione delle password in testo non crittografato è fortemente sconsigliata. Si noti che le password crittografate sono supportate solo in Windows. Inoltre, possono essere decrittografati solo se usati nello stesso computer e dallo stesso utente che li ha originariamente crittografati. Per altre informazioni sulla gestione sicura delle credenziali, vedere le procedure consigliate per la sicurezza per l'utilizzo di pacchetti da feed privati.

Suggerimento

Se viene passata una password non crittografata per password il messaggio di errore "Il parametro non è corretto" si verificherà.

Esempio:

Nel file di configurazione, l'elemento <packageSourceCredentials> contiene i nodi figlio per ogni nome di origine applicabile (gli spazi nel nome vengono sostituiti con _x0020_). Per le origini denominate "Contoso" e "Test Source", il file di configurazione contiene quanto segue quando si usano password crittografate:

<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>

È inoltre possibile specificare metodi di autenticazione validi.

<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>

Quando si usano password non crittografate archiviate in una variabile di ambiente:

<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>

Quando si usano password non crittografate:

Avviso

L'archiviazione delle password in testo non crittografato è fortemente sconsigliata.

<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

Archivia le chiavi per le origini che usano l'autenticazione con chiave API, in base alle impostazioni specificate con il comando nuget setapikey.

Chiave valore
(URL di origine) Chiave API crittografata.

Esempio:

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

disabledPackageSources

Identifica le origini attualmente disabilitate. Può essere vuoto. A meno che le origini specifiche non siano disabilitate in questa sezione, sono abilitate.

Chiave valore
(nome dell'origine) Valore booleano che indica se l'origine è disabilitata.

Esempio:

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

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

Nell'esempio precedente l'origine Contoso del pacchetto è disabilitata e non verrà usata per scaricare o installare i pacchetti.

activePackageSource

(Solo versione 2.x; deprecata nella versione 3.x+)

Identifica l'origine attualmente attiva o indica l'aggregazione di tutte le origini.

Chiave valore
(nome dell'origine) o All Se la chiave è il nome di un'origine, il valore è il percorso o l'URL dell'origine. Se All, il valore deve essere (Aggregate source) per combinare tutte le origini di pacchetti non disabilitate in altro modo.

Esempio:

<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>

Sezione trustedSigners

Archivia i firmatari attendibili usati per consentire il pacchetto durante l'installazione o il ripristino. Questo elenco non può essere vuoto quando l'utente imposta signatureValidationMode su require.

Questa sezione può essere aggiornata con il nuget trusted-signers comando .

Schema:

Un firmatario attendibile include una raccolta di certificate elementi che inserisce tutti i certificati che identificano un determinato firmatario. Un firmatario attendibile può essere un oggetto Author o .Repository

Un repository attendibile specifica anche per serviceIndex il repository (che deve essere un URI validohttps) e può facoltativamente specificare un elenco delimitato da punti e virgola di owners per limitare ancora di più gli utenti attendibili da tale repository specifico.

Gli algoritmi hash supportati usati per un'impronta digitale del certificato sono SHA256e SHA384SHA512.

Se un certificate oggetto specifica allowUntrustedRoot come true certificato specificato è autorizzato a concatenare a una radice non attendibile durante la compilazione della catena di certificati come parte della verifica della firma.

Esempio:

<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" />
        <owners>microsoft;aspnet;nuget</owners>
    </repository>
</trustedSigners>

sezione fallbackPackageFolders

(3.5+) Fornisce un modo per preinstallare i pacchetti in modo che non sia necessario eseguire alcuna operazione se il pacchetto viene trovato nelle cartelle di fallback. Le cartelle dei pacchetti di fallback hanno esattamente la stessa struttura di cartelle e file della cartella del pacchetto globale: è presente nupkg e tutti i file vengono estratti.

La logica di ricerca per questa configurazione è:

  • Cercare nella cartella del pacchetto globale per verificare se il pacchetto/versione è già stato scaricato.

  • Cercare nelle cartelle di fallback una corrispondenza di pacchetto/versione.

Se una delle due ricerche ha esito positivo, non è necessario scaricare.

Se non viene trovata una corrispondenza, NuGet controlla le origini file e quindi le origini HTTP e quindi scarica i pacchetti.

Chiave valore
(nome della cartella di fallback) Percorso della cartella di fallback.

Esempio:

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

Sezione Mapping origine pacchetto

La packageSourceMapping sezione contiene i dettagli che consentono alle operazioni del pacchetto NuGet di determinare da dove scaricare un ID pacchetto.

Questa sezione può essere gestita manualmente solo ora.

Una packageSourceMapping sezione può contenere packageSource solo sezioni.

packageSource

Sezione secondaria della packageSourceMapping sezione. Contiene un mapping che consente a NuGet di determinare se l'origine deve essere considerata per il download del pacchetto di interesse.

Chiave
Nome di un'origine del pacchetto dichiarata nella packageSources sezione . La chiave deve corrispondere esattamente alla chiave dell'origine del pacchetto.

Le packageSource sezioni in packageSourceMapping sono identificate in modo univoco da key.

pacchetto

Fa package parte della packageSource sezione .

Modello
Modello definito dalla sintassi del mapping dell'origine del pacchetto.

Esempio:

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

sezione packageManagement

Imposta il formato di gestione dei pacchetti predefinito, packages.config o PackageReference. I progetti in stile SDK usano sempre PackageReference.

Chiave valore
format Valore booleano che indica il formato di gestione dei pacchetti predefinito. Se 1, il formato è PackageReference. Se 0, il formato è packages.config.
disabilitato Valore booleano che indica se visualizzare la richiesta di selezionare un formato di pacchetto predefinito al primo installazione del pacchetto. False nasconde il prompt.

Esempio:

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

Suggerimento

Quando <clear /> è presente per un determinato nodo, NuGet ignora i valori di configurazione definiti in precedenza per tale nodo. Altre informazioni su come vengono applicate le impostazioni.

Uso delle variabili di ambiente

È possibile usare variabili di ambiente nei valori nuget.config (NuGet 3.4 +) per applicare le impostazioni in fase di esecuzione.

Ad esempio, se la variabile di ambiente HOME in Windows è impostata su c:\users\username, il valore di %HOME%\NuGetRepository nel file di configurazione viene risolto in c:\users\username\NuGetRepository.

Si noti che è necessario usare variabili di ambiente di tipo Windows (inizia e termina con %) anche in Mac/Linux. La presenza $HOME/NuGetRepository in un file di configurazione non verrà risolta. In Mac/Linux il valore di %HOME%/NuGetRepository verrà risolto in /home/myStuff/NuGetRepository.

Se non viene trovata una variabile di ambiente, NuGet usa il valore letterale dal file di configurazione. Ad esempio %MY_UNDEFINED_VAR%/NuGetRepository , verrà risolto come path/to/current_working_dir/$MY_UNDEFINED_VAR/NuGetRepository

La tabella seguente illustra la sintassi delle variabili di ambiente e il supporto del separatore di percorso per i file NuGet.Config.

NuGet.Config supporto delle variabili di ambiente

Sintassi Separatore dir Windows nuget.exe Windows dotnet.exe Mac nuget.exe (in Mono) Mac dotnet.exe
%MY_VAR% /
%MY_VAR% \ No No
$MY_VAR / No No No No
$MY_VAR \ No No No No

File di configurazione di esempio

Di seguito è riportato un file di esempio nuget.config che illustra una serie di impostazioni, tra cui quelle facoltative:

<?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" />
            <owners>microsoft;aspnet;nuget</owners>
        </repository>
    </trustedSigners>
</configuration>