Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il comportamento di NuGet è basato sulle impostazioni accumulate in uno o più file di configurazione (XML) che possono esistere in una soluzione (progetto se non viene usata alcuna soluzione), livelli utente e a livello di computer.
Configurare i percorsi e gli usi dei file
| Ambito |
NuGet.Config posizione del file |
Description |
|---|---|---|
| Soluzione | Cartella corrente (nota anche come cartella della soluzione) o qualsiasi cartella fino alla radice del disco. | In una cartella della soluzione le impostazioni si applicano a tutti i progetti nelle sottocartelle. Si noti che se un file di configurazione viene inserito in una cartella di progetto, non ha alcun effetto su tale progetto. Quando si ripristina un progetto nella riga di comando, la directory del progetto viene considerata come la directory della soluzione, che può causare differenze nel comportamento durante il ripristino del progetto e della soluzione. |
| User |
Windows:%appdata%\NuGet\NuGet.ConfigMac/Linux: ~/.config/NuGet/NuGet.Config o ~/.nuget/NuGet/NuGet.Config (varia in base agli strumenti) Le configurazioni aggiuntive sono supportate in tutte le piattaforme. Queste configurazioni non possono essere modificate dagli strumenti. Windows: %appdata%\NuGet\config\*.Config Mac/Linux: ~/.config/NuGet/config/*.config o ~/.nuget/config/*.config |
Le impostazioni si applicano a tutte le operazioni, ma vengono sostituite da qualsiasi impostazione a livello di soluzione. |
| Computatore |
Windows:%ProgramFiles(x86)%\NuGet\ConfigMac/Linux: /etc/opt/NuGet/Config (Linux) o /Library/Application Support (Mac) per impostazione predefinita. Se $NUGET_COMMON_APPLICATION_DATA non è né null né vuoto, invece $NUGET_COMMON_APPLICATION_DATA/NuGet/Config |
Le impostazioni si applicano a tutte le operazioni nel computer, ma vengono sostituite da qualsiasi impostazione a livello di utente o soluzione. |
Annotazioni
In Mac/Linux il percorso del file di configurazione utente varia in base agli strumenti. L'interfaccia della riga di comando di .NET usa la ~/.nuget/NuGet cartella , mentre Mono usa la ~/.config/NuGet cartella .
In Mac/Linux il percorso del file di configurazione a livello di utente varia in base agli strumenti
In Mac/Linux il percorso del file di configurazione utente varia in base agli strumenti.
La maggior parte degli utenti usa strumenti che cercano il file di configurazione utente nella ~/.nuget/NuGet cartella .
Questi altri strumenti cercano il file di configurazione utente nella ~/.config/NuGet cartella :
- Mono
- NuGet.exe
- Visual Studio 2019 per Mac (e versioni precedenti)
- Visual Studio 2022 per Mac (e versioni successive), solo quando si lavora su progetti Mono classici.
Se gli strumenti usati includono entrambe le posizioni, è consigliabile consolidarli seguendo questa procedura per consentire l'uso di un solo file di configurazione a livello di utente:
- Controllare il contenuto dei due file di configurazione a livello di utente e mantenere quello desiderato nella
~/.nuget/NuGetcartella. - Impostare il collegamento simbolico da
~/.nuget/NuGeta~/.config/NuGet. Ad esempio, eseguire il comando bash:ln -s ~/.nuget/NuGet ~/.config/NuGet.
Note per le versioni precedenti di NuGet:
- NuGet 3.3 e versioni precedenti usavano una
.nugetcartella per le impostazioni a livello di soluzione. Questa cartella non viene usata in NuGet 3.4+. - Per NuGet da 2.6 a 3.x, il file di configurazione a livello di computer in Windows si trovava in
%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]\NuGet.Config, dove{IDE}può essereVisualStudio,{Version}era la versione di Visual Studio,14.0ad esempio e{SKU}èCommunity,ProoEnterprise. Per eseguire la migrazione delle impostazioni a NuGet 4.0+, copiare semplicemente il file di configurazione in%ProgramFiles(x86)%\NuGet\Config. In Linux, questo percorso precedente era/etc/opte in Mac,/Library/Application Support.
Modifica delle impostazioni di configurazione
Un NuGet.Config file è un semplice file di testo XML contenente coppie chiave/valore, come descritto nell'argomento Impostazioni di configurazione NuGet .
Le impostazioni vengono gestite usando il comando di configurazione dell'interfaccia della riga di comando di NuGet:
- Per impostazione predefinita, le modifiche vengono apportate al file di configurazione a livello di utente. (In Mac/Linux, il percorso del file di configurazione a livello di utente varia in base agli strumenti)
- Per modificare le impostazioni in un file diverso, usare l'opzione
-configFile. In questo caso i file possono usare qualsiasi nome file. - Le chiavi fanno sempre distinzione tra maiuscole e minuscole.
- L'elevazione dei privilegi è necessaria per modificare le impostazioni nel file di impostazioni a livello di computer.
Avvertimento
Sebbene sia possibile modificare il file in qualsiasi editor di testo, NuGet (v3.4.3 e versioni successive) ignora automaticamente l'intero file di configurazione se contiene codice XML non valido (tag non corrispondenti, virgolette non valide e così via). Questo è il motivo per cui è preferibile gestire l'impostazione usando nuget config.
Impostazione di un valore
Finestre:
# 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
Annotazioni
In NuGet 3.4 e versioni successive è possibile usare le variabili di ambiente in qualsiasi valore, come in repositoryPath=%PACKAGEHOME% (Windows) e repositoryPath=$PACKAGEHOME (Mac/Linux).
Rimozione di un valore
Per rimuovere un valore, specificare una chiave con un valore vuoto.
# Windows
nuget config -set repositoryPath= -configfile c:\my.Config
# Mac/Linux
nuget config -set repositoryPath= -configfile /home/my.Config
Creazione di un nuovo file di configurazione
Usando l'interfaccia della riga di comando di .NET, creare un nuget.config predefinito eseguendo dotnet new nugetconfig.
Per altre informazioni, vedere comandi CLI di dotnet.
In alternativa, copiare manualmente il modello seguente nel nuovo file e quindi usare nuget config -configFile <filename> per impostare i valori:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
Modalità di applicazione delle impostazioni
Più NuGet.Config file consentono di archiviare le impostazioni in posizioni diverse in modo che si applichino a una singola soluzione o a un gruppo di soluzioni.
Queste impostazioni si applicano collettivamente a qualsiasi operazione NuGet richiamata dalla riga di comando o da Visual Studio, con le impostazioni "più vicine" a una soluzione o alla cartella corrente che ha la precedenza.
Se uno strumento da riga di comando viene usato in un file di progetto, anziché in un file di soluzione, la directory del progetto viene usata come "directory della soluzione", che può causare comportamenti incoerenti quando è presente un NuGet.Config file in una sottodirectory del file di soluzione.
In particolare, quando un file di configurazione non viene specificato in modo esplicito nella riga di comando, NuGet carica le impostazioni dai diversi file di configurazione nell'ordine seguente:
- (Non comune) Il
NuGetDefaults.Configfile, che contiene le impostazioni correlate solo alle origini del pacchetto. - File a livello del computer.
- File a livello di utente.
- I file trovati in ogni cartella nel percorso dalla radice del disco alla cartella corrente (dove
nuget.exeè invocato o la cartella contenente la soluzione di Visual Studio). Ad esempio, se viene richiamato un comando inc:\A\B\C, NuGet cerca e carica i file di configurazione inc:\, quindic:\Ac:\A\B, e infinec:\A\B\C.
Quando un file di configurazione viene specificato in modo esplicito nella riga di comando, ad esempio nuget -configFile my.config o dotnet restore --configfile my.config, verranno usate solo le impostazioni del file specificato.
Man mano che NuGet trova le impostazioni in questi file, vengono applicate come segue:
- Per gli elementi a elemento singolo, NuGet ha sostituito qualsiasi valore trovato in precedenza per la stessa chiave. Ciò significa che le impostazioni "più vicine" alla cartella corrente o alla soluzione sostituiscono qualsiasi altro elemento trovato in precedenza. Ad esempio, l'impostazione
defaultPushSourceinNuGetDefaults.Configviene sottoposta a override se esiste in qualsiasi altro file di configurazione. - Per gli elementi della raccolta ,ad esempio
<packageSources>, NuGet combina i valori di tutti i file di configurazione in una singola raccolta. - Quando
<clear />è presente per un determinato nodo, NuGet ignora i valori di configurazione definiti in precedenza per tale nodo.
Suggerimento
Aggiungere un nuget.config file nella radice del repository della soluzione. Questa procedura è considerata una procedura consigliata perché promuove la ripetibilità e garantisce che diversi utenti abbiano la stessa configurazione NuGet.
Procedura dettagliata per le impostazioni
Si supponga di avere la struttura di cartelle seguente in due unità separate:
disk_drive_1
User
disk_drive_2
Project1
Source
Project2
Source
tmp
Avrai quindi quattro NuGet.Config file nelle seguenti posizioni con il contenuto specificato. Il file a livello di computer non è incluso in questo esempio, ma si comporta in modo analogo al file a livello di utente.
File A. File a livello di utente, (%appdata%\NuGet\NuGet.Config in Windows, ~/.config/NuGet/NuGet.Config in Mac/Linux):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
File 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>
File 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>
File 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 carica e applica quindi le impostazioni come indicato di seguito, a seconda della posizione in cui viene richiamata:
Richiamato da
disk_drive_1/users: viene usato solo il repository predefinito elencato nel file di configurazione a livello di utente (A), perché questo è l'unico file trovato indisk_drive_1.Richiamato da
disk_drive_2/odisk_drive_/tmp: il file a livello di utente (A) viene caricato per primo, quindi NuGet passa alla radice didisk_drive_2e trova il file (B). NuGet cerca anche un file di configurazione in/tmpma non ne trova uno. Di conseguenza, viene usato il repository predefinito innuget.org, il ripristino del pacchetto è abilitato e i pacchetti vengono espansi indisk_drive_2/tmp.Richiamato da
disk_drive_2/Project1odisk_drive_2/Project1/Source: il file a livello di utente (A) viene caricato per primo, quindi NuGet carica il file (B) dalla radice didisk_drive_2, seguito dal file (C). Le impostazioni in (C) eseguono l'override di quelle in (B) e (A), quindi il percorso in cui vengono installati irepositoryPathpacchetti èdisk_drive_2/Project1/External/Packagesanzichédisk_drive_2/tmp. Inoltre, poiché (C) cancella<packageSources>, nuget.org non è più disponibile come origine lasciando solohttps://MyPrivateRepo/ES/nuget.Richiamato da
disk_drive_2/Project2odisk_drive_2/Project2/Source: il file a livello di utente (A) viene caricato prima seguito da file (B) e file (D). PoichépackageSourcesnon è cancellata, sianuget.orgchehttps://MyPrivateRepo/DQ/nugetsono disponibili come sorgenti. I pacchetti vengono espansi indisk_drive_2/tmpcome specificato in (B).
Configurazione aggiuntiva a livello di utente
A partire dalla versione 5.7, NuGet ha aggiunto il supporto per altri file di configurazione a livello di utente. In questo modo i fornitori di terze parti possono aggiungere altri file di configurazione utente senza elevazione dei privilegi.
Questi file di configurazione si trovano nella cartella di configurazione standard a livello di utente all'interno di una config sottocartella.
Tutti i file che terminano con .config o .Config verranno considerati.
Questi file non possono essere modificati dagli strumenti standard.
| Piattaforma del sistema operativo | Configurazioni aggiuntive |
|---|---|
| Windows | %appdata%\NuGet\config\*.Config |
| Mac/Linux |
~/.config/NuGet/config/*.config o ~/.nuget/config/*.config |
File di impostazioni predefinite NuGet
Il NuGetDefaults.Config è insolito e può specificare solo le origini dei pacchetti da cui vengono installati e aggiornati i pacchetti o controllare la destinazione predefinita per la pubblicazione di pacchetti con nuget push.
Poiché gli amministratori possono distribuire file coerenti NuGetDefaults.Config in computer di sviluppo e compilazione, ad esempio usando Criteri di gruppo, gli amministratori possono assicurarsi che tutti gli utenti dell'organizzazione usino origini di pacchetti coerenti, indipendentemente dal fatto che includano o meno nuget.org.
Importante
Il NuGetDefaults.Config file non comporta mai la rimozione di un'origine del pacchetto dalla configurazione NuGet di uno sviluppatore. Ciò significa che se lo sviluppatore ha già usato NuGet e quindi ha l'origine del pacchetto nuget.org registrata, non verrà rimossa dopo la creazione di un NuGetDefaults.Config file.
Inoltre, né NuGetDefaults.Config altri meccanismi in NuGet possono impedire l'accesso a origini di pacchetti come nuget.org. Se un'organizzazione vuole bloccare tale accesso, deve usare altri mezzi, ad esempio i firewall per farlo.
NuGetDefaults.Config ubicazione
La tabella seguente descrive dove archiviare il NuGetDefaults.Config file, a seconda del sistema operativo di destinazione:
| Piattaforma del sistema operativo |
NuGetDefaults.Config Ubicazione |
|---|---|
| Windows |
Visual Studio 2017 o NuGet 4.x+:%ProgramFiles(x86)%\NuGet Visual Studio 2015 e versioni precedenti o NuGet 3.x e precedenti: %PROGRAMDATA%\NuGet |
| Mac/Linux |
$XDG_DATA_HOME (~/.local/share o /usr/local/share, a seconda della distribuzione del sistema operativo) |
Impostazioni di NuGetDefaults.Config
packageSources: questa raccolta ha lo stesso significato di neipackageSourcesnormali file di configurazione e specifica le origini predefinite. NuGet utilizza le sorgenti nell'ordine specificato durante l'installazione o l'aggiornamento dei pacchetti nei progetti che usano il formato di gestionepackages.config. Per i progetti che usano il formato PackageReference, NuGet usa prima le origini locali, quindi le origini nelle condivisioni di rete, quindi le origini HTTP, indipendentemente dall'ordine nei file di configurazione. NuGet ignora sempre l'ordine delle origini con le operazioni di ripristino.disabledPackageSources: questa raccolta ha anche lo stesso significato neiNuGet.Configfile, in cui ogni sorgente interessata è elencata per nome e dal rispettivo valoretrue/falseche indica se è disabilitata. In questo modo il nome e l'URL di origine rimangono inpackageSourcessenza attivarlo per impostazione predefinita. I singoli sviluppatori possono quindi riabilitare l'origine impostando il valore dell'origine sufalsein altriNuGet.Configfile senza dover trovare di nuovo l'URL corretto. Ciò è utile anche per fornire agli sviluppatori un elenco completo di URL di origine interni per un'organizzazione, abilitando solo l'origine di un singolo team per impostazione predefinita.defaultPushSource: specifica la destinazione predefinita per le operazioninuget push, sostituendo l'impostazione predefinita dinuget.org. Gli amministratori possono distribuire questa impostazione per evitare la pubblicazione di pacchetti interni nel pubbliconuget.orgper errore, in quanto gli sviluppatori devono usarenuget push -Sourcespecificamente per la pubblicazione innuget.org.
Esempio di NuGetDefaults.Config e applicazione
<?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>