Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zachowanie NuGet jest sterowane przez skumulowane ustawienia w co najmniej jednym pliku konfiguracyjnym (XML), które mogą istnieć na poziomach rozwiązania (lub projektu, jeśli rozwiązanie nie jest używane), użytkownika i komputera.
Konfigurowanie lokalizacji plików i zastosowań
| Scope |
NuGet.Config lokalizacja pliku |
Description |
|---|---|---|
| Rozwiązanie | Bieżący folder (znany również jako folder rozwiązania) lub dowolny folder, aż do katalogu głównego dysku. | W folderze rozwiązania ustawienia mają zastosowanie do wszystkich projektów w podfolderach. Należy pamiętać, że jeśli plik konfiguracji zostanie umieszczony w folderze projektu, nie ma wpływu na ten projekt. Podczas przywracania projektu w wierszu polecenia katalog projektu jest traktowany jako katalog rozwiązania, co może prowadzić do różnic w zachowaniu podczas przywracania projektu a rozwiązaniem. |
| User |
Windows:%appdata%\NuGet\NuGet.ConfigMac/Linux: ~/.config/NuGet/NuGet.Config lub ~/.nuget/NuGet/NuGet.Config (różni się w zależności od narzędzi) Dodatkowe konfiguracje są obsługiwane na wszystkich platformach. Tych konfiguracji nie można edytować za pomocą narzędzi. Windows: %appdata%\NuGet\config\*.Config Mac/Linux: ~/.config/NuGet/config/*.config lub ~/.nuget/config/*.config |
Ustawienia mają zastosowanie do wszystkich operacji, ale są zastępowane przez dowolne ustawienia na poziomie rozwiązania. |
| Komputer |
Windows:%ProgramFiles(x86)%\NuGet\ConfigMac/Linux: /etc/opt/NuGet/Config (Linux) lub /Library/Application Support (Mac) domyślnie. Jeśli $NUGET_COMMON_APPLICATION_DATA nie jest wartością null ani nie jest pusta, $NUGET_COMMON_APPLICATION_DATA/NuGet/Config w przeciwnym razie |
Ustawienia mają zastosowanie do wszystkich operacji na komputerze, ale są zastępowane przez ustawienia na poziomie użytkownika lub rozwiązania. |
Uwaga / Notatka
W systemie Mac/Linux lokalizacja pliku konfiguracji użytkownika różni się w zależności od narzędzi. Interfejs wiersza polecenia platformy .NET używa ~/.nuget/NuGet folderu, a mono używa ~/.config/NuGet folderu.
W systemie Mac/Linux lokalizacja pliku konfiguracji na poziomie użytkownika różni się w zależności od narzędzi
W systemie Mac/Linux lokalizacja pliku konfiguracji użytkownika różni się w zależności od narzędzi.
Większość użytkowników korzysta z narzędzi, które szukają pliku konfiguracji użytkownika w folderze ~/.nuget/NuGet .
Te inne narzędzia szukają pliku konfiguracji użytkownika w folderze ~/.config/NuGet :
- Mono
- NuGet.exe
- Visual Studio 2019 dla komputerów Mac (i starsze wersje)
- Visual Studio 2022 dla komputerów Mac (i późniejsze jego wersje) jest dostępny wyłącznie w przypadku pracy nad klasycznymi projektami Mono.
Jeśli używane narzędzia obejmują obie lokalizacje, rozważ ich skonsolidowanie, wykonując następujące kroki, aby umożliwić pracę tylko z jednym plikiem konfiguracji na poziomie użytkownika:
- Sprawdź zawartość dwóch plików konfiguracji na poziomie użytkownika i zachowaj odpowiedni plik w
~/.nuget/NuGetfolderze. - Ustaw łącze symboliczne z
~/.nuget/NuGetna~/.config/NuGet. Na przykład uruchom polecenie bash:ln -s ~/.nuget/NuGet ~/.config/NuGet.
Uwagi dotyczące wcześniejszych wersji pakietu NuGet:
- Program NuGet 3.3 i starsze wersje używał
.nugetfolderu dla ustawień obejmujących całe rozwiązanie. Ten folder nie jest używany w programie NuGet 3.4 lub nowszym. - W przypadku pakietów NuGet od 2.6 do 3.x plik konfiguracji na poziomie komputera w systemie Windows znajdował się w lokalizacji
%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]\NuGet.Config, gdzie{IDE}może byćVisualStudio,{Version}jest wersją programu Visual Studio, taką jak14.0, a{SKU}toCommunity,ProlubEnterprise. Aby przeprowadzić migrację ustawień do pakietu NuGet 4.0 lub nowszego, po prostu skopiuj plik konfiguracji do%ProgramFiles(x86)%\NuGet\Config. W systemie Linux poprzednia lokalizacja to/etc/opt, a na komputerze Mac/Library/Application Support.
Zmienianie ustawień konfiguracji
Plik NuGet.Config jest prostym plikiem tekstowym XML zawierającym pary klucz/wartość zgodnie z opisem w temacie Ustawienia konfiguracji NuGet .
Ustawienia są zarządzane przy użyciu polecenia konfiguracji interfejsu wiersza polecenia NuGet:
- Domyślnie zmiany są wprowadzane do pliku konfiguracji na poziomie użytkownika. (W systemie Mac/Linux lokalizacja pliku konfiguracji na poziomie użytkownika różni się w zależności od narzędzi)
- Aby zmienić ustawienia w innym pliku, użyj przełącznika
-configFile. W takim przypadku pliki mogą używać dowolnej nazwy pliku. - Klucze są zawsze rozróżniane pod względem wielkości liter.
- Podniesienie poziomu uprawnień jest wymagane do zmiany ustawień w pliku ustawień na poziomie całego systemu komputerowego.
Ostrzeżenie
Mimo że plik można zmodyfikować w dowolnym edytorze tekstów, NuGet (wersja 3.4.3 lub nowsza) dyskretnie ignoruje cały plik konfiguracji, jeśli zawiera źle sformułowany kod XML (niedopasowane tagi, nieprawidłowe znaki cudzysłowu itp.). Dlatego preferowane jest zarządzanie ustawieniem przy użyciu polecenia nuget config.
Ustawianie wartości
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
Uwaga / Notatka
W programie NuGet 3.4 lub nowszym można używać zmiennych środowiskowych w dowolnej wartości, tak jak w systemach repositoryPath=%PACKAGEHOME% (Windows) i repositoryPath=$PACKAGEHOME (Mac/Linux).
Usuwanie wartości
Aby usunąć wartość, określ klucz z pustą wartością.
# Windows
nuget config -set repositoryPath= -configfile c:\my.Config
# Mac/Linux
nuget config -set repositoryPath= -configfile /home/my.Config
Tworzenie nowego pliku konfiguracji
Za pomocą interfejsu wiersza polecenia platformy .NET utwórz domyślną nuget.config, uruchamiając polecenie dotnet new nugetconfig.
Aby uzyskać więcej informacji, zobacz dotnet CLI commands (Polecenia interfejsu wiersza polecenia dotnet).
Alternatywnie ręcznie skopiuj poniższy szablon do nowego pliku, a następnie użyj polecenia nuget config -configFile <filename> , aby ustawić wartości:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
Jak są stosowane ustawienia
Wiele NuGet.Config plików umożliwia przechowywanie ustawień w różnych lokalizacjach, tak aby były stosowane do jednego rozwiązania lub grupy rozwiązań.
Te ustawienia są stosowane zbiorczo do dowolnej operacji NuGet wywoływanej z wiersza polecenia lub programu Visual Studio z ustawieniami istniejącymi "najbliżej" rozwiązania lub bieżącego folderu, które mają pierwszeństwo.
Jeśli narzędzie wiersza polecenia jest używane w pliku projektu, a nie w pliku rozwiązania, katalog projektu jest używany jako "katalog rozwiązania", co może prowadzić do niespójnego zachowania, gdy plik znajduje NuGet.Config się w podkatalogu pliku rozwiązania.
W szczególności, gdy plik konfiguracji nie zostanie jawnie określony w wierszu polecenia, pakiet NuGet ładuje ustawienia z różnych plików konfiguracji w następującej kolejności:
- (Nietypowe)
NuGetDefaults.ConfigPlik, który zawiera ustawienia związane tylko ze źródłami pakietów. - Plik na poziomie komputera.
- Plik na poziomie użytkownika.
- Pliki znalezione w każdym folderze w ścieżce z katalogu głównego dysku do bieżącego folderu (gdzie
nuget.exejest wywoływane lub folder zawierający rozwiązanie programu Visual Studio). Na przykład, jeśli polecenie jest wywoływane wc:\A\B\C, NuGet wyszukuje i ładuje pliki konfiguracji wc:\, następniec:\A, potemc:\A\B, a na koniecc:\A\B\C.
Jeśli plik konfiguracji jest jawnie określony w wierszu polecenia, na przykład nuget -configFile my.config lub dotnet restore --configfile my.config, będą używane tylko ustawienia z określonego pliku.
Ponieważ program NuGet znajduje ustawienia w tych plikach, są one stosowane w następujący sposób:
- W przypadku elementów pojedynczych, NuGet zastąpił każdą wcześniej znalezioną wartość dla tego samego klucza. Oznacza to, że ustawienia znajdujące się "najbliżej" bieżącego folderu lub rozwiązania zastępują wszystkie inne znalezione wcześniej. Na przykład ustawienie
defaultPushSourcejest zastępowane przezNuGetDefaults.Config, jeśli istnieje w jakimkolwiek innym pliku konfiguracji. - W przypadku elementów kolekcji (takich jak
<packageSources>), NuGet łączy wartości ze wszystkich plików konfiguracji w jedną kolekcję. - Gdy
<clear />jest obecny dla danego węzła, NuGet ignoruje wcześniej zdefiniowane wartości konfiguracji dla tego węzła.
Wskazówka
Dodaj plik nuget.config w katalogu głównym repozytorium rozwiązania. Jest to najlepsze rozwiązanie, ponieważ promuje powtarzalność i zapewnia, że różni użytkownicy mają tę samą konfigurację NuGet.
Przewodnik po ustawieniach
Załóżmy, że masz następującą strukturę folderów na dwóch oddzielnych dyskach:
disk_drive_1
User
disk_drive_2
Project1
Source
Project2
Source
tmp
Następnie masz cztery NuGet.Config pliki w następujących lokalizacjach z daną zawartością. (Plik na poziomie komputera nie jest uwzględniony w tym przykładzie, ale zachowuje się podobnie do pliku na poziomie użytkownika).
Plik A. Plik na poziomie użytkownika, (%appdata%\NuGet\NuGet.Config w systemie Windows, ~/.config/NuGet/NuGet.Config na komputerze Mac/Linux):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
Plik 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>
Plik 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>
Plik 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>
Narzędzie NuGet następnie ładuje i stosuje ustawienia w następujący sposób, w zależności od tego, gdzie jest wywoływany:
Wywoływane z
disk_drive_1/users: używane jest tylko domyślne repozytorium wymienione w pliku konfiguracji na poziomie użytkownika (A), ponieważ jest to jedyny plik znaleziony nadisk_drive_1.Wywoływany z
disk_drive_2/lubdisk_drive_/tmp: Plik na poziomie użytkownika (A) jest najpierw ładowany, a następnie NuGet przechodzi do katalogu głównegodisk_drive_2i znajduje plik (B). NuGet wyszukuje również plik konfiguracji w pliku/tmp, ale go nie znajduje. W związku z tym jest używane domyślne repozytoriumnuget.org, przywracanie pakietów jest włączone, a pakiety są rozszerzane w programiedisk_drive_2/tmp.Wywoływany z
disk_drive_2/Project1lubdisk_drive_2/Project1/Source: Plik na poziomie użytkownika (A) jest ładowany najpierw, a następnie NuGet ładuje plik (B) z katalogu głównegodisk_drive_2, a następnie plik (C). Ustawienia w (C) zastępują te w ustawieniach (B) i (A), więcrepositoryPathmiejsce, w którym instalowane są pakiety, todisk_drive_2/Project1/External/Packageszamiastdisk_drive_2/tmp. Ponadto, ponieważ (C) czyści<packageSources>, nuget.org nie jest już dostępny jako źródło pozostawiając tylkohttps://MyPrivateRepo/ES/nuget.Wywoływane z
disk_drive_2/Project2lubdisk_drive_2/Project2/Source: Najpierw ładowany jest plik na poziomie użytkownika (A), a następnie pliki (B) i (D). PonieważpackageSourcesnie jest czyszczone, obanuget.orgihttps://MyPrivateRepo/DQ/nugetsą dostępne jako źródła. Pakiety są rozszerzane wdisk_drive_2/tmpsposób określony w (B).
Dodatkowa konfiguracja dla całego użytkownika
Począwszy od wersji 5.7, pakiet NuGet dodał obsługę dodatkowych plików konfiguracji dla całego użytkownika. Dzięki temu dostawcy innych firm mogą dodawać dodatkowe pliki konfiguracji użytkownika bez podniesienia uprawnień.
Te pliki konfiguracyjne znajdują się w folderze konfiguracji użytkownika o zasięgu ogólnym w podfolderze config.
Wszystkie pliki kończące się na .config lub .Config będą brane pod uwagę.
Tych plików nie można edytować przy użyciu standardowych narzędzi.
| Platforma systemu operacyjnego | Dodatkowe konfiguracje |
|---|---|
| Windows | %appdata%\NuGet\config\*.Config |
| Mac/Linux |
~/.config/NuGet/config/*.config lub ~/.nuget/config/*.config |
Plik domyślny NuGet
Nie jest powszechne korzystanie z NuGetDefaults.Config, ponieważ może on jedynie określać źródła pakietów, z których pakiety są instalowane i aktualizowane, lub kontrolować domyślną lokację do publikowania pakietów przy użyciu nuget push.
Ponieważ administratorzy mogą wygodnie (na przykład za pomocą zasad grup) wdrażać spójne NuGetDefaults.Config pliki na maszynach deweloperskich i maszynach kompilacyjnych, mogą mieć pewność, że wszyscy w organizacji korzystają ze spójnych źródeł pakietów, niezależnie od tego, czy obejmują one nuget.org.
Ważne
Plik NuGetDefaults.Config nigdy nie powoduje usunięcia źródła pakietu z konfiguracji NuGet dewelopera. Oznacza to, że jeśli deweloper użył już pakietu NuGet i w związku z tym ma zarejestrowane źródło pakietu nuget.org, nie zostanie on usunięty po utworzeniu NuGetDefaults.Config pliku.
Ponadto ani NuGetDefaults.Config żaden inny mechanizm w pakiecie NuGet nie może uniemożliwić dostępu do źródeł pakietów, takich jak nuget.org. Jeśli organizacja chce zablokować taki dostęp, musi użyć innych środków, takich jak zapory, aby to zrobić.
NuGetDefaults.Config lokalizacja
W poniższej tabeli opisano miejsce NuGetDefaults.Config przechowywania pliku w zależności od docelowego systemu operacyjnego:
| Platforma systemu operacyjnego |
NuGetDefaults.Config Lokalizacja |
|---|---|
| Windows |
Visual Studio 2017 lub NuGet 4.x+:%ProgramFiles(x86)%\NuGet Programy Visual Studio 2015 i starsze lub NuGet 3.x i starsze: %PROGRAMDATA%\NuGet |
| Mac/Linux |
$XDG_DATA_HOME (zazwyczaj ~/.local/share lub /usr/local/share, w zależności od dystrybucji systemu operacyjnego) |
Ustawienia narzędzia NuGetDefaults.Config
packageSources: ta kolekcja ma takie samo znaczenie jakpackageSourcesw zwykłych plikach konfiguracji i określa domyślne źródła. Narzędzie NuGet używa źródeł w określonej kolejności podczas instalowania lub aktualizowania pakietów w projektach w formacie zarządzaniapackages.config. W przypadku projektów korzystających z formatu PackageReference program NuGet najpierw używa lokalnych źródeł, a następnie źródeł w udziałach sieciowych, a następnie źródeł HTTP, niezależnie od kolejności w plikach konfiguracji. NuGet zawsze ignoruje kolejność źródeł przy użyciu operacji przywracania.disabledPackageSources: ta kolekcja ma również takie samo znaczenie jak wNuGet.Configplikach, gdzie każde źródło, którego dotyczy problem, jest wymienione według jego nazwy itrue/falsewartości wskazującej, czy jest wyłączona. To pozwala nazwie źródła i adresowi URL pozostać wpackageSourcesbez włączania tego ustawienia domyślnie. Następnie poszczególni deweloperzy mogą ponownie włączyć źródło, ustawiając wartość źródła nafalsew innych plikachNuGet.Configbez konieczności ponownego znajdowania poprawnego adresu URL. Jest to również przydatne w przypadku dostarczania deweloperom pełnej listy wewnętrznych adresów URL źródłowych dla organizacji przy jednoczesnym domyślnie włączeniu źródła tylko pojedynczego zespołu.defaultPushSource: określa domyślny element docelowy dlanuget pushoperacji, zastępując wbudowaną wartość domyślnąnuget.org. Administratorzy mogą wdrożyć to ustawienie, aby uniknąć przypadkowego publikowania pakietów wewnętrznych do ogólnodostępnychnuget.org, ponieważ deweloperzy muszą używaćnuget push -Sourcedo publikowania wnuget.org.
Przykład nuGetDefaults.Config i aplikacja
<?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>