Ortak NuGet yapılandırmaları
NuGet'in davranışı, çözümde (çözüm kullanılmadıysa proje), kullanıcı ve bilgisayar genelindeki düzeylerde mevcut olabilecek bir veya daha fazla yapılandırma (XML) dosyasındaki birikmiş ayarlar tarafından yönlendirilir.
Yapılandırma dosyası konumları ve kullanımları
Kapsam | NuGet.Config dosyasının konumu |
Açıklama |
---|---|---|
Çözüm | Geçerli klasör (diğer adıyla Çözüm klasörü) veya sürücü köküne kadar olan herhangi bir klasör. | Bir çözüm klasöründe, ayarlar alt klasörlerdeki tüm projelere uygulanır. Bir yapılandırma dosyası bir proje klasörüne yerleştirilirse, bu proje üzerinde hiçbir etkisi olmadığını unutmayın. Komut satırında projeyi geri yüklerken, projenin dizini çözüm dizini olarak değerlendirilir ve bu da projeyi geri yüklerken davranış farklılıklarına neden olabilir. |
User | Windows: %appdata%\NuGet\NuGet.Config Mac/Linux: ~/.config/NuGet/NuGet.Config veya ~/.nuget/NuGet/NuGet.Config (araçlara göre değişir) Tüm platformlarda ek yapılandırmalar desteklenir. Bu yapılandırmalar araçlar tarafından düzenlenemez. Windows: %appdata%\NuGet\config\*.Config Mac/Linux: ~/.config/NuGet/config/*.config veya ~/.nuget/config/*.config |
Ayarlar tüm işlemler için geçerlidir, ancak tüm çözüm düzeyi ayarları tarafından geçersiz kılınabilir. |
Bilgisayar | Windows: %ProgramFiles(x86)%\NuGet\Config Mac/Linux: /etc/opt/NuGet/Config (Linux) veya /Library/Application Support (Mac) varsayılan olarak. Null veya boş değilse $NUGET_COMMON_APPLICATION_DATA , bunun $NUGET_COMMON_APPLICATION_DATA/NuGet/Config yerine |
Ayarlar bilgisayardaki tüm işlemler için geçerlidir, ancak tüm kullanıcı veya çözüm düzeyi ayarları tarafından geçersiz kılınabilir. |
Not
Mac/Linux'ta kullanıcı yapılandırma dosyası konumu araçlara göre değişir. .NET CLI klasörü, ~/.nuget/NuGet
Mono ise klasörü kullanır ~/.config/NuGet
.
Mac/Linux'ta kullanıcı düzeyinde yapılandırma dosyası konumu araçlara göre değişir
Mac/Linux'ta kullanıcı yapılandırma dosyası konumu araçlara göre değişir.
Kullanıcıların çoğu, klasörün altındaki ~/.nuget/NuGet
kullanıcı yapılandırma dosyasını arayabilen araçları kullanır.
Bu diğer araçlar, klasörün altındaki ~/.config/NuGet
kullanıcı yapılandırma dosyasını arar:
- Mono
- NuGet.exe
- Mac için Visual Studio 2019 (ve önceki sürümler)
- Mac için Visual Studio 2022 (ve sonraki sürümler), yalnızca klasik Mono projelerinde çalışırken.
Kullandığınız araçlar her iki konumu da içeriyorsa, yalnızca bir kullanıcı düzeyinde yapılandırma dosyasıyla çalışmanıza izin vermek için aşağıdaki adımları izleyerek bunları birleştirmeyi göz önünde bulundurun:
- İki kullanıcı düzeyinde yapılandırma dosyasının içeriğini denetleyin ve istediğiniz dosyayı klasör altında
~/.nuget/NuGet
tutun. - sembolik bağlantısını olarak
~/.nuget/NuGet
~/.config/NuGet
ayarlayın. Örneğin bash komutunu çalıştırın:ln -s ~/.nuget/NuGet ~/.config/NuGet
.
NuGet'in önceki sürümleri için notlar:
- NuGet 3.3 ve önceki sürümler, çözüm genelindeki ayarlar için bir
.nuget
klasör kullandı. Bu klasör NuGet 3.4+ içinde kullanılmaz. - NuGet 2.6 ile 3.x arasında, Windows'daki
%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]\NuGet.Config
bilgisayar düzeyinde yapılandırma dosyası içinde bulunur; burada{IDE}
{Version}
VisualStudio
, , gibi14.0
Visual Studio sürümüdür ve{SKU}
,Pro
veyaEnterprise
şeklindedir.Community
Ayarları NuGet 4.0+ sürümüne geçirmek için yapılandırma dosyasını öğesine%ProgramFiles(x86)%\NuGet\Config
kopyalamanız yeterlidir. Linux'ta bu önceki konum, ve Mac'te/Library/Application Support
şeklindeydi/etc/opt
.
Yapılandırma ayarlarını değiştirme
NuGet.Config
Dosya, NuGet Yapılandırma Ayarları konusunda açıklandığı gibi anahtar/değer çiftleri içeren basit bir XML metin dosyasıdır.
Ayarlar NuGet CLI yapılandırma komutu kullanılarak yönetilir:
- Varsayılan olarak, kullanıcı düzeyi yapılandırma dosyasında değişiklikler yapılır. (Mac/Linux'ta kullanıcı düzeyinde yapılandırma dosyasının konumu araçlara göre değişir)
- Farklı bir dosyadaki ayarları değiştirmek için anahtarını kullanın
-configFile
. Bu durumda dosyalar herhangi bir dosya adını kullanabilir. - Anahtarlar her zaman büyük/küçük harfe duyarlıdır.
- Bilgisayar düzeyinde ayarlar dosyasındaki ayarları değiştirmek için yükseltme gereklidir.
Uyarı
Dosyayı herhangi bir metin düzenleyicisinde değiştirebilmenize rağmen, NuGet (v3.4.3 ve üzeri), hatalı biçimlendirilmiş XML (eşleşmeyen etiketler, geçersiz tırnak işaretleri vb.) içeriyorsa yapılandırma dosyasının tamamını sessizce yoksayar. Bu nedenle ayarı kullanarak nuget config
yönetmek tercih edilir.
Değer ayarlama
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
Not
NuGet 3.4 ve sonraki sürümlerde ortam değişkenlerini (Windows) ve repositoryPath=$PACKAGEHOME
(Mac/Linux) gibi herhangi bir değerde repositoryPath=%PACKAGEHOME%
kullanabilirsiniz.
Bir değeri kaldırma
Bir değeri kaldırmak için boş değer içeren bir anahtar belirtin.
# Windows
nuget config -set repositoryPath= -configfile c:\my.Config
# Mac/Linux
nuget config -set repositoryPath= -configfile /home/my.Config
Yeni yapılandırma dosyası oluşturma
.NET CLI kullanarak komutunu çalıştırarak dotnet new nugetconfig
varsayılan bir nuget.config oluşturun.
Daha fazla bilgi için bkz . dotnet CLI komutları.
Alternatif olarak, aşağıdaki şablonu el ile yeni dosyaya kopyalayın ve ardından değerleri ayarlamak için kullanın nuget config -configFile <filename>
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
Ayarlar nasıl uygulanır?
Birden çok NuGet.Config
dosya, ayarları tek bir çözüme veya bir çözüm grubuna uygulanacak şekilde farklı konumlarda depolamanıza olanak sağlar.
Bu ayarlar, komut satırından veya Visual Studio'dan çağrılan tüm NuGet işlemleri için toplu olarak geçerlidir ve bir çözüme veya geçerli klasöre "en yakın" olan ayarlar önceliklidir.
Bir komut satırı aracı çözüm dosyası yerine proje dosyasında kullanılıyorsa, proje dizini "çözüm dizini" olarak kullanılır ve bu da çözüm dosyasının alt dizininde bir NuGet.Config
dosya olduğunda tutarsız davranışa yol açabilir.
Özellikle, bir yapılandırma dosyası komut satırında açıkça belirtilmediğinde, NuGet ayarları farklı yapılandırma dosyalarından aşağıdaki sırayla yükler:
- (Nadir) Yalnızca
NuGetDefaults.Config
paket kaynaklarıyla ilgili ayarları içeren dosya. - Bilgisayar düzeyindeki dosya.
- Kullanıcı düzeyi dosyası.
- Sürücü kökünden geçerli klasöre giden yoldaki her klasörde bulunan dosyalar (
nuget.exe
burada çağrılır veya Visual Studio çözümünü içeren klasör). Örneğin, içinde bir komut çağrılırsac:\A\B\C
NuGet içinde yapılandırma dosyalarınıc:\
arar ve yükler; ardındanc:\A
, vec:\A\B
son olarakc:\A\B\C
.
Örneğin nuget -configFile my.config
dotnet restore --configfile my.config
, komut satırında açıkça bir yapılandırma dosyası belirtildiğinde, yalnızca belirtilen dosyadaki ayarlar kullanılır.
NuGet bu dosyalardaki ayarları bulduğunda, bunlar aşağıdaki gibi uygulanır:
- Tek öğeli öğeler için NuGet, aynı anahtar için daha önce bulunan değerlerin yerini aldı. Bu, geçerli klasöre veya çözüme "en yakın" olan ayarların daha önce bulunan diğer tüm ayarları geçersiz kıldığını gösterir. Örneğin,
defaultPushSource
içindeki ayarıNuGetDefaults.Config
, başka bir yapılandırma dosyasında varsa geçersiz kılınmış olur. - NuGet, koleksiyon öğeleri (gibi
<packageSources>
) için tüm yapılandırma dosyalarındaki değerleri tek bir koleksiyonda birleştirir. - Belirli bir düğüm için mevcut olduğunda
<clear />
, NuGet söz konusu düğüm için önceden tanımlanmış yapılandırma değerlerini yoksayar.
İpucu
Çözüm deponuzun köküne bir nuget.config
dosya ekleyin. Bu, yinelenebilirliği yükselttiğinden ve farklı kullanıcıların aynı NuGet yapılandırmasına sahip olmasını sağladığından en iyi yöntem olarak kabul edilir.
Ayarlar kılavuzu
İki ayrı sürücüde aşağıdaki klasör yapısına sahip olduğunuzu varsayalım:
disk_drive_1
User
disk_drive_2
Project1
Source
Project2
Source
tmp
Ardından aşağıdaki konumlarda verilen içeriğe sahip dört NuGet.Config
dosyanız vardır. (Bilgisayar düzeyindeki dosya bu örneğe dahil değildir, ancak kullanıcı düzeyindeki dosyaya benzer şekilde davranır.)
Dosya A. Kullanıcı düzeyinde dosya, (%appdata%\NuGet\NuGet.Config
Windows'ta, ~/.config/NuGet/NuGet.Config
Mac/Linux'ta):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
Dosya 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>
Dosya 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>
Dosya 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>
Ardından NuGet, çağrıldığı yere bağlı olarak ayarları aşağıdaki gibi yükler ve uygular:
'den
disk_drive_1/users
çağrıldı: üzerinde bulunandisk_drive_1
tek dosya olduğundan, yalnızca kullanıcı düzeyi yapılandırma dosyasında (A) listelenen varsayılan depo kullanılır.veya
disk_drive_/tmp
öğesindendisk_drive_2/
çağrılır: Önce kullanıcı düzeyi dosyası (A) yüklenir, ardından NuGet kökünedisk_drive_2
gider ve dosyayı (B) bulur. NuGet içinde/tmp
bir yapılandırma dosyası da arar ancak bu dosyayı bulamaz. Sonuç olarak, üzerindekinuget.org
varsayılan depo kullanılır, paket geri yükleme etkinleştirilir ve paketler içindedisk_drive_2/tmp
genişletilir.veya
disk_drive_2/Project1/Source
öğesindendisk_drive_2/Project1
çağrılır: Önce kullanıcı düzeyi dosyası (A) yüklenir, ardından NuGet dosyasını (B) kökündendisk_drive_2
ve ardından dosya (C) yükler. (C) içindeki ayarlar (B) ve (A) içindeki ayarları geçersiz kılar, bu nedenle paketlerinrepositoryPath
yüklendiği yer yerinedisk_drive_2/tmp
olurdisk_drive_2/Project1/External/Packages
. Ayrıca , (C) öğesini temizlediğinden<packageSources>
nuget.org artık yalnızcahttps://MyPrivateRepo/ES/nuget
kaynak olarak kullanılamaz.veya
disk_drive_2/Project2/Source
:disk_drive_2/Project2
Kullanıcı düzeyi dosyası (A) önce yüklenir ve ardından dosya (B) ve dosya (D) eklenir. TemizlenmediğindenpackageSources
, hem hemhttps://MyPrivateRepo/DQ/nuget
denuget.org
kaynak olarak kullanılabilir. Paketler (B) içindedisk_drive_2/tmp
belirtildiği gibi içinde genişletildi.
Ek kullanıcı genelinde yapılandırma
NuGet, 5.7'den başlayarak ek kullanıcı çapında yapılandırma dosyaları için destek eklemiştir. Bu, üçüncü taraf satıcıların yükseltme olmadan ek kullanıcı yapılandırma dosyaları eklemesine olanak tanır.
Bu yapılandırma dosyaları, bir config
alt klasör içindeki standart kullanıcı genelindeki yapılandırma klasöründe bulunur.
veya .Config
ile .config
biten tüm dosyalar dikkate alınır.
Bu dosyalar standart araçlar tarafından düzenlenemez.
İşletim Sistemi Platformu | Ek Yapılandırmalar |
---|---|
Windows | %appdata%\NuGet\config\*.Config |
Mac/Linux | ~/.config/NuGet/config/*.config veya ~/.nuget/config/*.config |
NuGet varsayılanları dosyası
NuGetDefaults.Config
yaygın değildir ve yalnızca paketlerin yüklendiği ve güncelleştirildiği paket kaynaklarını belirtebilir veya ile nuget push
paketleri yayımlamak için varsayılan hedefi denetleyebilir.
Yöneticiler tutarlı dosyaları geliştiriciye ve derleme makinelerine rahatça dağıtabildiğinden NuGetDefaults.Config
(örneğin, Grup İlkesi kullanarak) kuruluştaki herkesin tutarlı paket kaynaklarını (nuget.org dahil olsun veya olmasın) kullanmasını sağlayabilirler.
Önemli
Dosya NuGetDefaults.Config
hiçbir zaman bir paket kaynağının geliştiricinin NuGet yapılandırmasından kaldırılmasına neden olmaz. Başka bir deyişle, geliştirici NuGet'i zaten kullandıysa ve bu nedenle nuget.org paket kaynağını kaydettiyse, dosya NuGetDefaults.Config
oluşturulduktan sonra kaldırılmaz.
Ayrıca NuGet'teki diğer NuGetDefaults.Config
mekanizmalar da nuget.org gibi paket kaynaklarına erişimi engelleyebilir. Bir kuruluş bu tür erişimi engellemek istiyorsa, bunu yapmak için güvenlik duvarları gibi başka araçlar kullanması gerekir.
NuGetDefaults.Config
yer
Aşağıdaki tabloda, hedef işletim sistemine bağlı olarak dosyanın nerede NuGetDefaults.Config
depolanması gerektiği açıklanmaktadır:
İşletim Sistemi Platformu | NuGetDefaults.Config Yer |
---|---|
Windows | Visual Studio 2017 veya NuGet 4.x+: %ProgramFiles(x86)%\NuGet Visual Studio 2015 ve öncesi veya NuGet 3.x ve öncesi: %PROGRAMDATA%\NuGet |
Mac/Linux | $XDG_DATA_HOME (genellikle ~/.local/share veya /usr/local/share , işletim sistemi dağıtımına bağlı olarak) |
NuGetDefaults.Config ayarları
packageSources
: Bu koleksiyon, normal yapılandırma dosyalarındakiyle aynı anlamapackageSources
sahiptir ve varsayılan kaynakları belirtir. NuGet, yönetim biçimini kullanarakpackages.config
projelerde paketleri yüklerken veya güncelleştirirken kaynakları sırayla kullanır. PackageReference biçimini kullanan projeler için NuGet, yapılandırma dosyalarındaki sıraylan bağımsız olarak önce yerel kaynakları, ardından ağ paylaşımlarındaki kaynakları, ardından HTTP kaynaklarını kullanır. NuGet, geri yükleme işlemleriyle kaynakların sırasını her zaman yoksayar.disabledPackageSources
: Bu koleksiyon, dosyalardaNuGet.Config
bulunan ve etkilenen her kaynağın adına göre listelendiği ve devre dışı bırakılıp bırakılmadığını belirten birtrue
/false
değere sahip olduğu anlamına da sahiptir. Bu, kaynak adın ve URL'nin varsayılan olarak açık olmadan içindepackageSources
kalmasına olanak tanır. Ardından tek tek geliştiriciler, doğru URL'yi yeniden bulmak zorunda kalmadan kaynağın değerinifalse
diğerNuGet.Config
dosyalarda olarak ayarlayarak kaynağı yeniden etkinleştirebilir. Bu, geliştiricilere kuruluş için iç kaynak URL'lerinin tam listesini sağlarken varsayılan olarak yalnızca tek bir ekibin kaynağını etkinleştirmek için de yararlıdır.defaultPushSource
: yerleşik varsayılanını geçersiz kılarak işlemler içinnuget push
varsayılannuget.org
hedefi belirtir. Yöneticiler, geliştiricilerin 'de yayımlamak için özel olarak kullanmasınuget push -Source
gerektiğinden iç paketlerin yanlışlıkla genelenuget.org
yayımlanmasını önlemek içinnuget.org
bu ayarı dağıtabilir.
Örnek NuGetDefaults.Config ve uygulama
<?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>