Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het gedrag van NuGet wordt aangestuurd door de verzamelde instellingen in een of meer config-bestanden (XML) die op het niveau van een oplossing (project als er geen oplossing wordt gebruikt), en op gebruikers- en computerniveau kunnen bestaan.
Locaties en toepassingen van configuratiebestanden
| Scope |
NuGet.Config bestandslocatie |
Description |
|---|---|---|
| Solution | Huidige map (ook wel oplossingsdirectory genoemd) of een map tot aan de hoofddirectory van de schijf. | In een oplossingsmap zijn instellingen van toepassing op alle projecten in submappen. Houd er rekening mee dat als een configuratiebestand in een projectmap wordt geplaatst, dit geen effect heeft op dat project. Bij het herstellen van een project op de opdrachtregel wordt de map van het project behandeld als de oplossingsmap, wat kan leiden tot verschillen in gedrag bij het herstellen van het project versus de oplossing. |
| User |
Windows:%appdata%\NuGet\NuGet.ConfigMac/Linux: ~/.config/NuGet/NuGet.Config of ~/.nuget/NuGet/NuGet.Config (verschilt per hulpprogramma) Aanvullende configuraties worden ondersteund op alle platforms. Deze configuraties kunnen niet worden bewerkt door de hulpprogramma's. Ramen: %appdata%\NuGet\config\*.Config Mac/Linux: ~/.config/NuGet/config/*.config of ~/.nuget/config/*.config |
Instellingen zijn van toepassing op alle bewerkingen, maar worden overschreven door instellingen op oplossingsniveau. |
| Computer |
Windows:%ProgramFiles(x86)%\NuGet\ConfigMac/Linux: /etc/opt/NuGet/Config (Linux) of /Library/Application Support (Mac) standaardinstelling. Als $NUGET_COMMON_APPLICATION_DATA niet null of leeg is, gebruik dan $NUGET_COMMON_APPLICATION_DATA/NuGet/Config in plaats daarvan |
Instellingen zijn van toepassing op alle bewerkingen op de computer, maar worden overschreven door instellingen op gebruikers- of oplossingsniveau. |
Opmerking
Op Mac/Linux varieert de locatie van het gebruikersconfiguratiebestand per hulpprogramma. .NET CLI maakt gebruik van ~/.nuget/NuGet de map, terwijl Mono gebruikmaakt van ~/.config/NuGet de map.
Op Mac/Linux varieert de locatie van het configuratiebestand op gebruikersniveau per hulpprogramma
Op Mac/Linux varieert de locatie van het gebruikersconfiguratiebestand per hulpprogramma.
De meeste gebruikers gebruiken hulpprogramma's die zoeken naar het gebruikersconfiguratiebestand onder de ~/.nuget/NuGet map.
Deze andere hulpprogramma's zoeken naar het configuratiebestand van de gebruiker onder de ~/.config/NuGet map:
- Mono
- NuGet.exe
- Visual Studio 2019 voor Mac (en eerdere versies)
- Visual Studio 2022 voor Mac (en latere versies), alleen wanneer u werkt aan klassieke Mono-projecten.
Als de hulpprogramma's die u gebruikt beide locaties omvat, kunt u overwegen om ze te consolideren door deze stappen uit te voeren, zodat u met slechts één configuratiebestand op gebruikersniveau kunt werken:
- Controleer de inhoud van de twee configuratiebestanden op gebruikersniveau en behoud de gewenste map
~/.nuget/NuGet. - Symbolische koppeling instellen van
~/.nuget/NuGetnaar~/.config/NuGet. Bijvoorbeeld Bash-opdracht uitvoeren:ln -s ~/.nuget/NuGet ~/.config/NuGet.
Opmerkingen voor eerdere versies van NuGet:
- NuGet 3.3 en eerder gebruikten een
.nugetmap voor instellingen voor de hele oplossing. Deze map wordt niet gebruikt in NuGet 3.4+. - Voor NuGet 2.6 tot en met 3.x bevindt het configuratiebestand op computerniveau in Windows zich in
%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]\NuGet.Config, waar{IDE}dat kan zijnVisualStudio,{Version}was de Visual Studio-versie zoals14.0, en{SKU}isCommunity,ProofEnterprise. Als u instellingen wilt migreren naar NuGet 4.0+, kopieert u het configuratiebestand naar%ProgramFiles(x86)%\NuGet\Config. Op Linux was/etc/optdeze vorige locatie, en op Mac,/Library/Application Support.
Configuratie-instellingen wijzigen
Een NuGet.Config bestand is een eenvoudig XML-tekstbestand met sleutel-waardeparen, zoals beschreven in het onderwerp Configuratie-instellingen voor NuGet .
Instellingen worden beheerd met behulp van de NuGet CLI-configuratieopdracht:
- Standaard worden wijzigingen aangebracht in het configuratiebestand op gebruikersniveau. (Op Mac/Linux varieert de locatie van het configuratiebestand op gebruikersniveau per hulpprogramma)
- Als u instellingen in een ander bestand wilt wijzigen, gebruikt u de
-configFileschakeloptie. In dit geval kunnen bestanden elke bestandsnaam gebruiken. - Sleutels zijn altijd hoofdlettergevoelig.
- Benodigde bevoegdheden zijn vereist voor het wijzigen van instellingen in het bestand met instellingen op computerniveau.
Waarschuwing
Hoewel u het bestand in een teksteditor kunt wijzigen, negeert NuGet (v3.4.3 en hoger) het hele configuratiebestand op de achtergrond als het ongeldige XML-bestand bevat (niet-overeenkomende tags, ongeldige aanhalingstekens, enzovoort). Daarom is het beter om de instelling te beheren met behulp van nuget config.
Een waarde instellen
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
Opmerking
In NuGet 3.4 en hoger kunt u omgevingsvariabelen in elke waarde gebruiken, zoals in repositoryPath=%PACKAGEHOME% (Windows) en repositoryPath=$PACKAGEHOME (Mac/Linux).
Een waarde verwijderen
Als u een waarde wilt verwijderen, geeft u een sleutel op met een lege waarde.
# Windows
nuget config -set repositoryPath= -configfile c:\my.Config
# Mac/Linux
nuget config -set repositoryPath= -configfile /home/my.Config
Een nieuw configuratiebestand maken
Maak met behulp van de .NET CLI een standaard-nuget.config door uit te voeren dotnet new nugetconfig.
Zie dotnet CLI-opdrachten voor meer informatie.
U kunt de onderstaande sjabloon ook handmatig kopiëren naar het nieuwe bestand en vervolgens gebruiken nuget config -configFile <filename> om waarden in te stellen:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
Hoe instellingen worden toegepast
Met meerdere NuGet.Config bestanden kunt u instellingen opslaan op verschillende locaties, zodat ze van toepassing zijn op één oplossing of op een groep oplossingen.
Deze instellingen zijn gezamenlijk van toepassing op elke NuGet-bewerking die wordt aangeroepen vanaf de opdrachtregel of vanuit Visual Studio, met instellingen die zich 'het dichtst bij een oplossing' bevinden of de huidige map voorrang heeft.
Als een opdrachtregelprogramma wordt gebruikt in een projectbestand, in plaats van een oplossingsbestand, wordt de projectmap gebruikt als de 'oplossingsmap', wat kan leiden tot inconsistent gedrag wanneer er een NuGet.Config bestand in een submap van het oplossingsbestand staat.
Specifiek, wanneer een configuratiebestand niet expliciet op de commando regel wordt opgegeven, laadt NuGet instellingen vanuit de verschillende configuratiebestanden in de volgende volgorde:
- (Ongebruikelijk) Het
NuGetDefaults.Configbestand, dat instellingen bevat die alleen betrekking hebben op pakketbronnen. - Het bestand op computerniveau.
- Het bestand op gebruikersniveau.
- Bestanden gevonden in elke map in het pad vanaf de basis van het station naar de huidige map (waar
nuget.exewordt aangeroepen of de map die de Visual Studio-oplossing bevat). Als bijvoorbeeld een opdracht wordt aangeroepen inc:\A\B\C, zoekt NuGet naar configuratiebestanden en laadt dezec:\in, vervolgensc:\A, enc:\A\Bten slottec:\A\B\C.
Wanneer een configuratiebestand expliciet wordt opgegeven op de opdrachtregel, bijvoorbeeld nuget -configFile my.config of dotnet restore --configfile my.config, worden alleen de instellingen van het opgegeven bestand gebruikt.
Omdat NuGet instellingen in deze bestanden vindt, worden ze als volgt toegepast:
- Voor elementen met een enkel item vervangt NuGet een eerder gevonden waarde voor dezelfde sleutel. Dit betekent dat instellingen die zich het dichtst bij de huidige map of oplossing bevinden, eventuele eerder gevonden items overschrijven. De
defaultPushSource-instelling inNuGetDefaults.Configwordt bijvoorbeeld overschreven als deze bestaat in een ander configuratiebestand. - Voor verzamelingselementen (zoals
<packageSources>), combineert NuGet de waarden van alle configuratiebestanden in één verzameling. - Wanneer
<clear />aanwezig is voor een bepaald knooppunt, negeert NuGet eerder gedefinieerde configuratiewaarden voor dat knooppunt.
Aanbeveling
Voeg een nuget.config bestand toe in de hoofdmap van uw oplossingsopslagplaats. Dit wordt beschouwd als een best practice omdat het herhaalbaarheid bevordert en ervoor zorgt dat verschillende gebruikers dezelfde NuGet-configuratie hebben.
Uitleg van instellingen
Stel dat u de volgende mapstructuur hebt op twee afzonderlijke stations:
disk_drive_1
User
disk_drive_2
Project1
Source
Project2
Source
tmp
U hebt vervolgens vier NuGet.Config bestanden op de volgende locaties met de opgegeven inhoud. (Het bestand op computerniveau is niet opgenomen in dit voorbeeld, maar gedraagt zich op dezelfde manier als het bestand op gebruikersniveau.)
Bestand A. Bestand op gebruikersniveau(%appdata%\NuGet\NuGet.Config in Windows, ~/.config/NuGet/NuGet.Config op Mac/Linux):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
Bestand 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>
Bestand 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>
Bestand 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 laadt en past instellingen als volgt toe, afhankelijk van waar deze wordt aangeroepen:
Aangeroepen vanuit
disk_drive_1/users: Alleen de standaardopslagplaats die wordt vermeld in het configuratiebestand op gebruikersniveau (A) wordt gebruikt, omdat dat het enige bestand is dat opgeslagendisk_drive_1is.Opgeroepen vanuit
disk_drive_2/ofdisk_drive_/tmp: Het bestand op gebruikersniveau (A) wordt eerst geladen. Vervolgens gaat NuGet naar de hoofdmap vandisk_drive_2en vindt bestand (B). NuGet zoekt ook naar een configuratiebestand in/tmp, maar vindt er geen. Als gevolg hiervan wordt de standaardopslagplaatsnuget.orggebruikt, wordt pakketherstel ingeschakeld en worden pakketten uitgebreid.disk_drive_2/tmpAangeroepen vanuit
disk_drive_2/Project1ofdisk_drive_2/Project1/Source: Het bestand op gebruikersniveau (A) wordt eerst geladen, en vervolgens laadt NuGet het bestand (B) uit de hoofdmap vandisk_drive_2, gevolgd door bestand (C). Instellingen in (C) overschrijven deze in (B) en (A), dus derepositoryPathlocatie waar pakketten worden geïnstalleerd, isdisk_drive_2/Project1/External/Packagesin plaats vandisk_drive_2/tmp. Omdat (C) ook<packageSources>verwijdert, is nuget.org niet meer beschikbaar als bron en blijft alleenhttps://MyPrivateRepo/ES/nugetover.Opgeroepen vanuit
disk_drive_2/Project2ofdisk_drive_2/Project2/Source: Het gebruikersniveau-bestand (A) wordt eerst geladen, gevolgd door bestand (B) en bestand (D). OmdatpackageSourcesniet is gewist, zijn zowelnuget.orgalshttps://MyPrivateRepo/DQ/nugetbeschikbaar als bronnen. Pakketten worden uitgebreiddisk_drive_2/tmpzoals opgegeven in (B).
Aanvullende configuratie voor de hele gebruiker
Vanaf 5.7 heeft NuGet ondersteuning toegevoegd voor aanvullende configuratiebestanden voor de hele gebruiker. Hiermee kunnen externe leveranciers extra gebruikersconfiguratiebestanden toevoegen zonder verhoging van rechten.
Deze configuratiebestanden vindt u in de standaardconfiguratiemap voor de hele gebruiker in een config submap.
Alle bestanden die eindigen op .config of .Config worden overwogen.
Deze bestanden kunnen niet worden bewerkt door de standaardhulpprogramma's.
| Besturingssysteemplatform | Aanvullende configuraties |
|---|---|
| Windows | %appdata%\NuGet\config\*.Config |
| Mac/Linux |
~/.config/NuGet/config/*.config of ~/.nuget/config/*.config |
NuGet-standaardbestand
Het NuGetDefaults.Config is ongebruikelijk en kan alleen pakketbronnen opgeven waaruit pakketten worden geïnstalleerd en bijgewerkt, of het standaarddoel voor het publiceren van pakketten beheren met nuget push.
Omdat beheerders consistent NuGetDefaults.Config bestanden (bijvoorbeeld met Groepsbeleid) kunnen implementeren op ontwikkelings- en bouwmachines, kunnen zij ervoor zorgen dat iedereen in de organisatie consistente pakketbronnen gebruikt, ongeacht of nuget.org is inbegrepen.
Belangrijk
Het NuGetDefaults.Config bestand zorgt er nooit voor dat een pakketbron wordt verwijderd uit de NuGet-configuratie van een ontwikkelaar. Dit betekent dat als de ontwikkelaar NuGet al heeft gebruikt en daarom de nuget.org pakketbron heeft geregistreerd, deze niet wordt verwijderd na het maken van een NuGetDefaults.Config bestand.
Bovendien kunnen noch NuGetDefaults.Config een ander mechanisme in NuGet toegang tot pakketbronnen zoals nuget.org voorkomen. Als een organisatie dergelijke toegang wil blokkeren, moet deze andere middelen gebruiken, zoals firewalls.
NuGetDefaults.Config plaats
In de volgende tabel wordt beschreven waar het NuGetDefaults.Config bestand moet worden opgeslagen, afhankelijk van het doelbesturingssystem:
| Besturingssysteemplatform |
NuGetDefaults.Config Plaats |
|---|---|
| Windows |
Visual Studio 2017 of NuGet 4.x+:%ProgramFiles(x86)%\NuGet Visual Studio 2015 en eerder of NuGet 3.x en eerder: %PROGRAMDATA%\NuGet |
| Mac/Linux |
$XDG_DATA_HOME (meestal ~/.local/share of /usr/local/share, afhankelijk van de distributie van het besturingssysteem) |
NuGetDefaults.Config-instellingen
packageSources: deze verzameling heeft dezelfde betekenis alspackageSourcesin reguliere configuratiebestanden en geeft de standaardbronnen op. NuGet gebruikt de bronnen op volgorde bij het installeren of bijwerken van pakketten in projecten met behulp van depackages.configbeheerindeling. Voor projecten die de PackageReference-indeling gebruiken, gebruikt NuGet eerst lokale bronnen, vervolgens bronnen op netwerkshares en vervolgens HTTP-bronnen, ongeacht de volgorde in de configuratiebestanden. NuGet negeert altijd de volgorde van bronnen met herstelbewerkingen.disabledPackageSources: deze verzameling heeft ook dezelfde betekenis als inNuGet.Configbestanden, waarbij elke betrokken bron wordt vermeld op basis van de naam en eentrue/falsewaarde die aangeeft of deze is uitgeschakeld. Hierdoor kunnen de bronnaam en URL blijven staanpackageSourceszonder dat deze standaard is ingeschakeld. Afzonderlijke ontwikkelaars kunnen de bron vervolgens opnieuw inschakelen door de waardefalsevan de bron in andereNuGet.Configbestanden in te stellen zonder de juiste URL opnieuw te hoeven vinden. Dit is ook nuttig om ontwikkelaars van een volledige lijst van interne bron-URL's van een organisatie te voorzien, terwijl standaard alleen de bron van een individueel team wordt ingeschakeld.defaultPushSource: Hiermee specificeert u het standaarddoel voornuget push-bewerkingen, en wordt de ingebouwde standaard vannuget.orgoverschreven. Beheerders kunnen deze instelling implementeren om te voorkomen dat interne pakketten per ongeluk naar het publieknuget.orgworden gepubliceerd, omdat ontwikkelaars specifiek moeten gebruikennuget push -Sourceom naarnuget.orgte publiceren.
Voorbeeld van NuGetDefaults.Config en toepassing
<?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>