nuget.config Referensi

Perilaku NuGet dikontrol oleh pengaturan dalam file atau yang berbeda NuGet.Config seperti yang dijelaskan dalam konfigurasi NuGet Umum.nuget.config

nuget.config adalah file XML yang berisi simpul tingkat <configuration> atas, yang kemudian berisi elemen bagian yang dijelaskan dalam topik ini. Setiap bagian berisi nol atau lebih item. Lihat contoh file konfigurasi. Nama pengaturan tidak peka huruf besar/kecil, dan nilai dapat menggunakan variabel lingkungan.

Tip

nuget.config Tambahkan file di akar repositori proyek Anda. Ini dianggap sebagai praktik terbaik karena mempromosikan pengulangan dan memastikan bahwa pengguna yang berbeda memiliki konfigurasi NuGet yang sama. Anda mungkin perlu mengonfigurasi clear elemen untuk memastikan tidak ada konfigurasi khusus pengguna atau komputer yang diterapkan. Baca selengkapnya tentang cara pengaturan diterapkan.

bagian konfigurasi

Berisi pengaturan konfigurasi lain-lain, yang dapat diatur menggunakan nuget config perintah .

dependencyVersion dan repositoryPath hanya berlaku untuk proyek menggunakan packages.config. globalPackagesFolder hanya berlaku untuk proyek menggunakan format PackageReference.

Tombol Nilai
dependencyVersion (packages.config hanya) Nilai default DependencyVersion untuk penginstalan, pemulihan, dan pembaruan paket, ketika sakelar -DependencyVersion tidak ditentukan secara langsung. Nilai ini juga digunakan oleh UI Pengelola Paket NuGet. Nilainya adalah Lowest, HighestPatch, HighestMinor, Highest.
globalPackagesFolder (proyek menggunakan PackageReference saja) Lokasi folder paket global default. Defaultnya adalah %userprofile%\.nuget\packages (Windows) atau ~/.nuget/packages (Mac/Linux). Jalur relatif dapat digunakan dalam file khusus nuget.config proyek. Pengaturan ini ditimpa oleh NUGET_PACKAGES variabel lingkungan, yang lebih diutamakan.
repositoryPath (packages.config hanya) Lokasi untuk menginstal paket NuGet alih-alih folder default $(Solutiondir)/packages . Jalur relatif dapat digunakan dalam file khusus nuget.config proyek.
defaultPushSource Mengidentifikasi URL atau jalur sumber paket yang harus digunakan sebagai default jika tidak ada sumber paket lain yang ditemukan untuk operasi.
http_proxy http_proxy.user http_proxy.password no_proxy Pengaturan proksi yang akan digunakan saat menyambungkan ke sumber paket; http_proxy harus dalam format http://<username>:<password>@<domain>. Kata sandi dienkripsi dan tidak dapat ditambahkan secara manual. Untuk no_proxy, nilainya adalah daftar domain yang dipisahkan koma yang melewati server proksi. Anda dapat secara bergantian menggunakan variabel lingkungan http_proxy dan no_proxy untuk nilai tersebut. Untuk detail tambahan, lihat Pengaturan proksi NuGet (skolima.blogspot.com).
maxHttpRequestsPerSource Mengontrol jumlah maksimum permintaan paralel yang dikirim dari NuGet ke setiap sumber paket untuk resolusi dan unduhan dependensi paket. Nilai default pada dotnet.exe adalah Int32.MaxValue yang berasal dari HttpClientHandler.MaxConnectionsPerServer properti. Pengaturan ini tidak berdampak pada dotnet.exeMac OS karena batas pembatasan diatur ke 16 untuk menghindari terlalu banyak kesalahan file yang terbuka. Nilai default untuk NuGet client tools yang berjalan seperti .NET FrameworkVisual Studio dan nuget.exe aktif 64 dan 1 aktif WindowsMono. Nilai default untuk Packages.config proyek gaya diatur ke Environment.ProcessorCount. Mengonfigurasi maxHttpRequestsPerSource properti ke nilai yang kurang dari default dapat memengaruhi performa NuGet.
signatureValidationMode Menentukan mode validasi yang digunakan untuk memverifikasi tanda tangan paket untuk penginstalan paket, dan pemulihan. Nilainya adalah accept, require. Default ke accept.

Contoh:

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

bagian bindingRedirects

Mengonfigurasi apakah NuGet melakukan pengalihan pengikatan otomatis saat paket diinstal.

Tombol Nilai
skip Boolean yang menunjukkan apakah akan melewati pengalihan pengikatan otomatis. Defaultnya adalah false.

Contoh:

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

bagian packageRestore

Mengontrol pemulihan paket selama build.

Tombol Nilai
diaktifkan Boolean yang menunjukkan apakah NuGet dapat melakukan pemulihan otomatis. Anda juga dapat mengatur EnableNuGetPackageRestore variabel lingkungan dengan nilai alih-alih True mengatur kunci ini dalam file konfigurasi.
automatic Boolean yang menunjukkan apakah NuGet harus memeriksa paket yang hilang selama build.

Contoh:

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

bagian solusi

Mengontrol apakah packages folder solusi disertakan dalam kontrol sumber. Bagian ini hanya berfungsi dalam nuget.config file dalam folder solusi.

Tombol Nilai
disableSourceControlIntegration Boolean yang menunjukkan apakah akan mengabaikan folder paket saat bekerja dengan kontrol sumber. Nilai defaultnya adalah false.

Contoh:

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

Bagian sumber paket

, packageSources, packageSourceCredentials, apikeysactivePackageSource, disabledPackageSources, trustedSigners dan packageSourceMapping semua bekerja sama untuk mengonfigurasi cara kerja NuGet dengan repositori paket selama operasi penginstalan, pemulihan, dan pembaruan.

Perintah nuget sources umumnya digunakan untuk mengelola pengaturan ini, kecuali apikeys yang dikelola menggunakannuget setapikeyperintah , dan trustedSigners yang dikelola menggunakan nuget trusted-signers perintah .

Perhatikan bahwa URL sumber untuk nuget.org adalah https://api.nuget.org/v3/index.json.

packageSources

Mencantumkan semua sumber paket yang diketahui. Urutan diabaikan selama operasi pemulihan dan dengan proyek apa pun menggunakan format PackageReference. NuGet menghormati urutan sumber untuk operasi penginstalan dan pembaruan dengan proyek menggunakan packages.config.

Atribut XML Tujuan
Kunci (nama untuk ditetapkan ke sumber paket)
Nilai Jalur atau URL sumber paket.
protocolVersion Versi protokol server NuGet yang akan digunakan. Versi saat ini adalah "3". Default ke versi "2" saat tidak menunjuk ke URL sumber paket yang berakhiran .json (misalnya https://api.nuget.org/v3/index.json). Didukung di NuGet 3.0+. Lihat NUGet Server API untuk informasi selengkapnya tentang protokol versi 3.
allowInsecure Koneksi ions Ketika false, atau tidak ditentukan, NuGet akan memancarkan peringatan ketika sumber menggunakan http, bukan https. Jika Anda yakin bahwa komunikasi dengan sumber ini tidak akan pernah berisiko terkena serangan intersepsi, Anda dapat mengatur nilai ke true untuk menekan peringatan. Didukung di NuGet 6.8+.

Contoh:

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

Catatan

Saat menggunakan CLI, Anda dapat mengekspresikan RestoreSources properti MSBuild atau --source(.NET CLI) | -Source(NuGet CLI) untuk mengambil <packageSources> alih yang ditentukan dalam NuGet.config.

Tip

Ketika <clear /> ada untuk simpul tertentu, NuGet mengabaikan nilai konfigurasi yang ditentukan sebelumnya untuk simpul tersebut. Baca selengkapnya tentang cara pengaturan diterapkan.

packageSourceCredentials

Menyimpan nama pengguna dan kata sandi untuk sumber, biasanya ditentukan dengan -username dan -password beralih dengan nuget sources. Kata sandi dienkripsi secara default kecuali -storepasswordincleartext opsi juga digunakan. Secara opsional, jenis autentikasi yang valid dapat ditentukan dengan sakelar -validauthenticationtypes .

Tombol Nilai
Nama pengguna Nama pengguna untuk sumber dalam teks biasa. Catatan: variabel lingkungan dapat digunakan untuk meningkatkan keamanan.
kata sandi Kata sandi terenkripsi untuk sumber. Kata sandi terenkripsi hanya didukung di Windows, dan hanya dapat didekripsi ketika digunakan pada komputer yang sama dan melalui pengguna yang sama dengan enkripsi asli.
cleartextpassword Kata sandi yang tidak terenkripsi untuk sumbernya. Catatan: variabel lingkungan dapat digunakan untuk meningkatkan keamanan.
validauthenticationtypes Daftar jenis autentikasi yang valid yang dipisahkan koma untuk sumber ini. Atur ini ke basic jika server mengiklankan NTLM atau Negosiasi dan kredensial Anda harus dikirim menggunakan mekanisme Dasar, misalnya saat menggunakan PAT dengan Azure DevOps Server lokal. Nilai valid lainnya termasuk negotiate, kerberos, ntlm, dan digest, tetapi nilai-nilai ini tidak mungkin berguna.

Peringatan

Menyimpan kata sandi dalam teks yang jelas sangat tidak disarankan. Harap dicatat bahwa kata sandi terenkripsi hanya didukung pada Windows. Selain itu, mereka hanya dapat didekripsi ketika digunakan pada komputer yang sama dan oleh pengguna yang sama yang awalnya mengenkripsinya. Untuk informasi selengkapnya tentang mengelola kredensial dengan aman, lihat praktik terbaik keamanan untuk menggunakan paket dari umpan privat.

Tip

Jika kata sandi yang tidak dienkripsi diteruskan untuk password pesan kesalahan "Parameter salah" akan terjadi.

Contoh:

Dalam file konfigurasi, <packageSourceCredentials> elemen berisi simpul anak untuk setiap nama sumber yang berlaku (spasi dalam nama diganti dengan _x0020_). Artinya, untuk sumber bernama "Contoso" dan "Test Source", file konfigurasi berisi yang berikut saat menggunakan kata sandi terenkripsi:

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

Selain itu, metode autentikasi yang valid dapat disediakan.

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

Saat menggunakan kata sandi yang tidak terenkripsi yang disimpan dalam variabel lingkungan:

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

Saat menggunakan kata sandi yang tidak terenkripsi:

Peringatan

Menyimpan kata sandi dalam teks yang jelas sangat tidak disarankan.

<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

Menyimpan kunci untuk sumber yang menggunakan autentikasi kunci API, seperti yang nuget setapikey diatur dengan perintah .

Tombol Nilai
(URL sumber) Kunci API terenkripsi.

Contoh:

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

disabledPackageSources

Mengidentifikasi sumber yang saat ini dinonaktifkan. Mungkin kosong. Kecuali sumber tertentu dinonaktifkan di bagian ini, sumber tersebut diaktifkan.

Tombol Nilai
(nama sumber) Boolean yang menunjukkan apakah sumber dinonaktifkan.

Contoh:

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

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

Dalam contoh di atas, sumber Contoso paket dinonaktifkan dan tidak akan digunakan untuk mengunduh atau menginstal paket.

activePackageSource

(hanya 2.x; tidak digunakan lagi dalam 3.x+)

Mengidentifikasi ke sumber aktif saat ini atau menunjukkan agregat semua sumber.

Tombol Nilai
(nama sumber) atau All Jika kunci adalah nama sumber, nilainya adalah jalur sumber atau URL. Jika All, nilai harus (Aggregate source) menggabungkan semua sumber paket yang tidak dinonaktifkan.

Contoh:

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

bagian trustedSigners

Menyimpan penanda tangan tepercaya yang digunakan untuk mengizinkan paket saat menginstal atau memulihkan. Daftar ini tidak boleh kosong ketika pengguna mengatur signatureValidationMode ke require.

Bagian ini dapat diperbarui dengan nuget trusted-signers perintah .

Skema:

Penanda tangan tepercaya memiliki kumpulan certificate item yang mendaftarkan semua sertifikat yang mengidentifikasi penanda tangan tertentu. Penanda tangan tepercaya dapat berupa Author atau Repository.

Repositori tepercaya juga menentukan serviceIndex untuk repositori (yang harus menjadi uri yang validhttps) dan dapat secara opsional menentukan daftar yang dibatasi titik koma untuk membatasi lebih banyak owners lagi siapa yang dipercaya dari repositori tertentu tersebut.

Algoritma hash yang didukung yang digunakan untuk sidik jari sertifikat adalah SHA256, SHA384 dan SHA512.

certificate Jika ditentukan allowUntrustedRoot sebagai true sertifikat yang diberikan diizinkan untuk menautkan ke akar yang tidak tepercaya saat membangun rantai sertifikat sebagai bagian dari verifikasi tanda tangan.

Contoh:

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

bagian fallbackPackageFolders

(3.5+) Menyediakan cara untuk menginstal paket sebelumnya sehingga tidak ada pekerjaan yang perlu dilakukan jika paket ditemukan di folder fallback. Folder paket fallback memiliki folder dan struktur file yang sama persis dengan folder paket global: .nupkg ada, dan semua file diekstrak.

Logika pencarian untuk konfigurasi ini adalah:

  • Lihat di folder paket global untuk melihat apakah paket/versi sudah diunduh.

  • Lihat di folder fallback untuk kecocokan paket/versi.

Jika salah satu pencarian berhasil, maka tidak ada unduhan yang diperlukan.

Jika kecocokan tidak ditemukan, NuGet memeriksa sumber file, lalu sumber http, lalu mengunduh paket.

Tombol Nilai
(nama folder fallback) Jalur ke folder fallback.

Contoh:

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

Bagian pemetaan sumber paket

Bagian ini packageSourceMapping berisi detail yang membantu operasi paket NuGet menentukan dari mana id paket harus diunduh.

Bagian ini hanya dapat dikelola secara manual sekarang.

Bagian packageSourceMapping hanya dapat berisi packageSource bagian.

packageSource

Sub bagian dari bagian packageSourceMapping . Berisi pemetaan untuk membantu NuGet menentukan apakah sumber harus dipertimbangkan untuk mengunduh paket yang menarik.

Tombol
Nama sumber paket yang dideklarasikan di bagian .packageSources Kunci harus sama persis dengan kunci sumber paket.

Bagian packageSource di bawah diidentifikasi packageSourceMapping secara unik oleh key.

package

package adalah bagian dari bagian .packageSource

Pola
Pola seperti yang didefinisikan oleh sintaks pemetaan Sumber Paket.

Contoh:

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

bagian packageManagement

Mengatur format manajemen paket default, baik packages.config atau PackageReference. Proyek bergaya SDK selalu menggunakan PackageReference.

Tombol Nilai
format Boolean yang menunjukkan format manajemen paket default. Jika 1, formatnya adalah PackageReference. Jika 0, formatnya adalah packages.config.
dinonaktifkan Boolean yang menunjukkan apakah akan menampilkan perintah untuk memilih format paket default pada penginstalan paket pertama. False menyembunyikan perintah.

Contoh:

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

Tip

Ketika <clear /> ada untuk simpul tertentu, NuGet mengabaikan nilai konfigurasi yang ditentukan sebelumnya untuk simpul tersebut. Baca selengkapnya tentang cara pengaturan diterapkan.

Menggunakan variabel lingkungan

Anda dapat menggunakan variabel lingkungan dalam nuget.config nilai (NuGet 3.4+) untuk menerapkan pengaturan pada waktu proses.

Misalnya, jika HOME variabel lingkungan pada Windows diatur ke c:\users\username, maka nilai %HOME%\NuGetRepository dalam file konfigurasi diselesaikan ke c:\users\username\NuGetRepository.

Perhatikan bahwa Anda harus menggunakan variabel lingkungan gaya Windows (dimulai dan diakhir dengan %) bahkan di Mac/Linux. Memiliki $HOME/NuGetRepository dalam file konfigurasi tidak akan diselesaikan. Di Mac/Linux nilai %HOME%/NuGetRepository akan diselesaikan ke /home/myStuff/NuGetRepository.

Jika variabel lingkungan tidak ditemukan, NuGet menggunakan nilai harfiah dari file konfigurasi. Misalnya %MY_UNDEFINED_VAR%/NuGetRepository akan diselesaikan sebagai path/to/current_working_dir/$MY_UNDEFINED_VAR/NuGetRepository

Tabel di bawah ini menunjukkan sintaks variabel environnment dan dukungan pemisah jalur untuk file NuGet.Config.

NuGet.Config dukungan variabel lingkungan

Sintaks Pemisah dir Windows nuget.exe Windows dotnet.exe Mac nuget.exe (dalam Mono) Mac dotnet.exe
%MY_VAR% / Ya Ya Ya Ya
%MY_VAR% \ Ya Ya No No
$MY_VAR / No No No No
$MY_VAR \ No No No Tidak

Contoh file konfigurasi

Di bawah ini adalah contoh nuget.config file yang mengilustrasikan sejumlah pengaturan termasuk yang opsional:

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