nuget.config Odwołanie

Zachowanie narzędzia NuGet jest kontrolowane przez ustawienia w różnych NuGet.Config plikach lub nuget.config zgodnie z opisem w artykule Typowe konfiguracje nuGet.

nuget.config to plik XML zawierający węzeł najwyższego poziomu <configuration> , który zawiera elementy sekcji opisane w tym temacie. Każda sekcja zawiera zero lub więcej elementów. Zobacz przykładowy plik konfiguracji. Nazwy ustawień są niewrażliwe na wielkość liter, a wartości mogą używać zmiennych środowiskowych.

Napiwek

nuget.config Dodaj plik w katalogu głównym repozytorium projektu. Jest to najlepsze rozwiązanie, ponieważ promuje powtarzalność i zapewnia, że różni użytkownicy mają tę samą konfigurację NuGet. Może być konieczne skonfigurowanie clear elementów, aby upewnić się, że nie zastosowano konfiguracji specyficznej dla użytkownika ani maszyny. Dowiedz się więcej o sposobie stosowania ustawień.

sekcja konfiguracji

Zawiera różne ustawienia konfiguracji, które można ustawić za pomocą nuget config polecenia .

dependencyVersion i repositoryPath mają zastosowanie tylko do projektów przy użyciu polecenia packages.config. globalPackagesFolder dotyczy tylko projektów korzystających z formatu PackageReference.

Key Wartość
dependencyVersion (packages.config tylko) Wartość domyślna DependencyVersion instalacji, przywracania i aktualizowania pakietu, gdy -DependencyVersion przełącznik nie jest określony bezpośrednio. Ta wartość jest również używana przez interfejs użytkownika Menedżer pakietów NuGet. Wartości to Lowest, , HighestMinorHighestPatch, Highest.
globalPackagesFolder (projekty korzystające tylko z funkcji PackageReference) Lokalizacja domyślnego folderu pakietów globalnych. Wartość domyślna to %userprofile%\.nuget\packages (Windows) lub ~/.nuget/packages (Mac/Linux). Ścieżkę względną można używać w plikach specyficznych dla nuget.config projektu. To ustawienie jest zastępowane przez zmienną NUGET_PACKAGES środowiskową, która ma pierwszeństwo.
repositoryPath (packages.config tylko) Lokalizacja, w której mają być instalowane pakiety NuGet zamiast folderu domyślnego $(Solutiondir)/packages . Ścieżkę względną można używać w plikach specyficznych dla nuget.config projektu.
defaultPushSource Identyfikuje adres URL lub ścieżkę źródła pakietu, które powinno być używane jako domyślne, jeśli nie zostaną znalezione żadne inne źródła pakietów dla operacji.
no_proxy http_proxy http_proxy.user http_proxy.password Ustawienia serwera proxy do użycia podczas nawiązywania połączenia ze źródłami pakietów; http_proxy powinien mieć format http://<username>:<password>@<domain>. Hasła są szyfrowane i nie można ich dodać ręcznie. W przypadku no_proxyparametru wartość jest rozdzielaną przecinkami listą domen pomijania serwera proxy. Możesz również użyć zmiennych środowiskowych http_proxy i no_proxy dla tych wartości. Aby uzyskać dodatkowe informacje, zobacz Ustawienia serwera proxy NuGet (skolima.blogspot.com).
maxHttpRequestsPerSource Określa maksymalną liczbę żądań równoległych wysyłanych z pakietu NuGet do każdego źródła pakietów na potrzeby rozwiązywania i pobierania zależności pakietu. Wartość domyślna elementu dotnet.exe to Int32.MaxValue , która pochodzi z HttpClientHandler.MaxConnectionsPerServer właściwości. To ustawienie nie ma wpływu na dotnet.exeMac OS przyczynę, ponieważ limit ograniczania przepustowości jest ustawiony, aby 16 uniknąć zbyt wielu błędów otwartych plików. Wartość domyślna dla NuGet client tools tej funkcji jest uruchamiana na .NET Framework przykład Visual Studio i nuget.exe jest 64 włączona Windows i 1 na .Mono Wartość domyślna dla Packages.config projektów stylów jest ustawiona na Environment.ProcessorCountwartość . Skonfigurowanie maxHttpRequestsPerSource właściwości na wartość mniejszą niż domyślna może mieć wpływ na wydajność narzędzia NuGet.
signatureValidationMode Określa tryb weryfikacji używany do weryfikowania podpisów pakietu na potrzeby instalacji pakietu i przywracania. Wartości to accept, require. Wartość domyślna to accept.

Przykład:

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

sekcja bindingRedirects

Określa, czy pakiet NuGet wykonuje automatyczne przekierowania powiązań podczas instalowania pakietu.

Key Wartość
skip Wartość logiczna wskazująca, czy pominąć automatyczne przekierowania powiązań. Wartością domyślną jest false.

Przykład:

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

packageRestore section (sekcja packageRestore)

Steruje przywracaniem pakietów podczas kompilacji.

Key Wartość
enabled Wartość logiczna wskazująca, czy narzędzie NuGet może wykonywać automatyczne przywracanie. Można również ustawić EnableNuGetPackageRestore zmienną środowiskową z wartością True zamiast ustawiać ten klucz w pliku konfiguracji.
automatyczne Wartość logiczna wskazująca, czy pakiet NuGet powinien sprawdzać brakujące pakiety podczas kompilacji.

Przykład:

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

sekcja rozwiązania

Określa, packages czy folder rozwiązania jest uwzględniony w kontroli źródła. Ta sekcja działa tylko w nuget.config plikach w folderze rozwiązania.

Key Wartość
disableSourceControlIntegration Wartość logiczna wskazująca, czy ignorować folder packages podczas pracy z kontrolą źródła. Wartość domyślna to false.

Przykład:

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

Sekcje źródła pakietu

Wszystkie packageSourceselementy , packageSourceCredentials, activePackageSourcetrustedSignersapikeysdisabledPackageSourcesi packageSourceMapping współpracują ze sobą, aby skonfigurować sposób działania pakietu NuGet z repozytoriami pakietów podczas operacji instalacji, przywracania i aktualizacji.

Polecenie nuget sources jest zwykle używane do zarządzania tymi ustawieniami, z wyjątkiem apikeys zarządzanych za pomocąnuget setapikeypolecenia i trustedSigners zarządzanego nuget trusted-signers za pomocą polecenia .

Należy pamiętać, że źródłowy adres URL nuget.org to https://api.nuget.org/v3/index.json.

packageSources

Wyświetla listę wszystkich znanych źródeł pakietów. Kolejność jest ignorowana podczas operacji przywracania i z dowolnym projektem przy użyciu formatu PackageReference. Program NuGet uwzględnia kolejność źródeł dla operacji instalacji i aktualizacji w projektach przy użyciu polecenia packages.config.

Atrybut XML Purpose
Klawisz (nazwa, która ma zostać przypisana do źródła pakietu)
Wartość Ścieżka lub adres URL źródła pakietu.
protocolVersion Używana wersja protokołu serwera NuGet. Bieżąca wersja to "3". Wartość domyślna to wersja "2", gdy nie wskazuje na adres URL źródła pakietu kończący się .json na (np. https://api.nuget.org/v3/index.json). Obsługiwane w programie NuGet 3.0 lub nowszym. Aby uzyskać więcej informacji na temat protokołu w wersji 3, zobacz Interfejs API serwera NuGet.
allowInsecure Połączenie ions Jeśli wartość false lub nie zostanie określona, program NuGet będzie emitować ostrzeżenie, gdy źródło używa protokołu HTTP, a nie https. Jeśli masz pewność, że komunikacja z tym źródłem nigdy nie będzie zagrożona atakami przechwytywczymi, możesz ustawić wartość true, aby pominąć ostrzeżenie. Obsługiwane w programie NuGet 6.8 lub nowszym.

Przykład:

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

Uwaga

W przypadku korzystania z interfejsu wiersza polecenia można wyrazić właściwość MSBuild lub (interfejs wiersza polecenia platformy NuGet)(interfejs wiersza polecenia NuGet),-Source | aby zastąpić wartość zdefiniowaną RestoreSources<packageSources> w pliku NuGet.config.--source

Napiwek

Gdy <clear /> jest obecny dla danego węzła, NuGet ignoruje wcześniej zdefiniowane wartości konfiguracji dla tego węzła. Dowiedz się więcej o sposobie stosowania ustawień.

packageSourceCredentials

Przechowuje nazwy użytkowników i hasła dla źródeł, zazwyczaj określone za pomocą -username przełączników i -password z nuget sources. Hasła są domyślnie szyfrowane, chyba że -storepasswordincleartext jest również używana opcja. Opcjonalnie można określić prawidłowe typy uwierzytelniania za pomocą przełącznika -validauthenticationtypes .

Key Wartość
nazwa użytkownika Nazwa użytkownika źródła w postaci zwykłego tekstu. Uwaga: zmienne środowiskowe mogą służyć do zwiększenia bezpieczeństwa.
hasło Zaszyfrowane hasło dla źródła. Zaszyfrowane hasła są obsługiwane tylko w systemie Windows i można je odszyfrować tylko w przypadku użycia na tym samym komputerze i za pośrednictwem tego samego użytkownika co oryginalne szyfrowanie.
cleartextpassword Niezaszyfrowane hasło dla źródła. Uwaga: zmienne środowiskowe mogą służyć do zwiększenia bezpieczeństwa.
validauthenticationtypes Rozdzielona przecinkami lista prawidłowych typów uwierzytelniania dla tego źródła. Ustaw tę opcję na basic wartość , jeśli serwer anonsuje protokół NTLM lub negocjuj, a poświadczenia muszą być wysyłane przy użyciu mechanizmu Podstawowe, na przykład w przypadku używania tokenu pat z lokalnym serwerem Azure DevOps Server. Inne prawidłowe wartości to negotiate, , ntlmkerberosi digest, ale te wartości są mało prawdopodobne, aby były przydatne.

Ostrzeżenie

Przechowywanie haseł w postaci zwykłego tekstu jest zdecydowanie odradzane. Należy pamiętać, że zaszyfrowane hasła są obsługiwane tylko w systemie Windows. Ponadto można je odszyfrować tylko wtedy, gdy są używane na tej samej maszynie i przez tego samego użytkownika, który pierwotnie je zaszyfrował. Aby uzyskać więcej informacji na temat bezpiecznego zarządzania poświadczeniami, zapoznaj się z najlepszymi rozwiązaniami w zakresie zabezpieczeń dotyczącymi używania pakietów z prywatnych źródeł danych.

Napiwek

Jeśli nieszyfrowane hasło zostanie przekazane dla password komunikatu o błędzie "Parametr jest niepoprawny" wystąpi.

Przykład:

W pliku <packageSourceCredentials> konfiguracji element zawiera węzły podrzędne dla każdej odpowiedniej nazwy źródłowej (spacje w nazwie są zastępowane ciągiem _x0020_). Oznacza to, że w przypadku źródeł o nazwach "Contoso" i "Test Source" plik konfiguracji zawiera następujące elementy podczas korzystania z zaszyfrowanych haseł:

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

Ponadto można podać prawidłowe metody uwierzytelniania.

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

W przypadku używania niezaszyfrowanych haseł przechowywanych w zmiennej środowiskowej:

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

W przypadku korzystania z niezaszyfrowanych haseł:

Ostrzeżenie

Przechowywanie haseł w postaci zwykłego tekstu jest zdecydowanie odradzane.

<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

Przechowuje klucze dla źródeł, które używają uwierzytelniania klucza interfejsu API, zgodnie z ustawieniem za nuget setapikey pomocą polecenia .

Key Wartość
(źródłowy adres URL) Zaszyfrowany klucz interfejsu API.

Przykład:

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

disabledPackageSources

Zidentyfikowano aktualnie wyłączone źródła. Może być pusty. Jeśli określone źródła nie zostaną wyłączone w tej sekcji, zostaną one włączone.

Key Wartość
(nazwa źródła) Wartość logiczna wskazująca, czy źródło jest wyłączone.

Przykład:

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

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

W powyższym przykładzie źródło Contoso pakietu jest wyłączone i nie będzie używane do pobierania ani instalowania pakietów.

activePackageSource

(tylko 2.x; przestarzałe w wersji 3.x+)

Identyfikuje aktualnie aktywne źródło lub wskazuje agregację wszystkich źródeł.

Key Wartość
(nazwa źródła) lub All Jeśli klucz jest nazwą źródła, wartość jest ścieżką źródłową lub adresem URL. Jeśli Allparametr , należy (Aggregate source) połączyć wszystkie źródła pakietów, które nie są wyłączone w inny sposób.

Przykład:

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

sekcja trustedSigners

Przechowuje zaufanych osób podpisujących używanych do zezwalania na pakiet podczas instalowania lub przywracania. Ta lista nie może być pusta, gdy użytkownik ustawia wartość signatureValidationModerequire.

Tę sekcję można zaktualizować za nuget trusted-signers pomocą polecenia .

Schemat:

Zaufany użytkownik podpisujący ma kolekcję certificate elementów, które zarejestrowały wszystkie certyfikaty identyfikujące danego sygnatariusza. Zaufanym podpisem może być element Author lub Repository.

Zaufane repozytorium określa serviceIndex również dla repozytorium (który musi być prawidłowym https identyfikatorem URI) i opcjonalnie może określić rozdzielaną średnikami listęowners, aby ograniczyć jeszcze więcej osób zaufanych z tego konkretnego repozytorium.

Obsługiwane algorytmy skrótu używane do odcisku palca certyfikatu to SHA256, SHA384 i SHA512.

Jeśli element certificate określa allowUntrustedRoot , że true dany certyfikat może połączyć łańcuch z niezaufanym katalogiem głównym podczas tworzenia łańcucha certyfikatów w ramach weryfikacji podpisu.

Przykład:

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

sekcja fallbackPackageFolders

(3,5+) Zapewnia sposób wstępnego instalowania pakietów, aby nie trzeba było wykonywać żadnej pracy, jeśli pakiet zostanie znaleziony w folderach rezerwowych. Foldery pakietów rezerwowych mają dokładnie taką samą strukturę folderów i plików, jak folder pakietu globalnego: .nupkg jest obecny, a wszystkie pliki są wyodrębniane.

Logika wyszukiwania dla tej konfiguracji to:

  • Poszukaj w folderze pakietu globalnego, aby sprawdzić, czy pakiet/wersja został już pobrany.

  • Poszukaj w folderach rezerwowych dopasowania pakietu/wersji.

Jeśli wyszukiwanie zakończy się pomyślnie, pobieranie nie jest konieczne.

Jeśli dopasowanie nie zostanie znalezione, narzędzie NuGet sprawdza źródła plików, a następnie źródła http, a następnie pobiera pakiety.

Key Wartość
(nazwa folderu rezerwowego) Ścieżka do folderu rezerwowego.

Przykład:

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

Sekcja mapowania źródła pakietu

Sekcja packageSourceMapping zawiera szczegółowe informacje ułatwiające operacje pakietu NuGet określające miejsce pobierania identyfikatora pakietu.

Ta sekcja może być teraz zarządzana tylko ręcznie.

Sekcja packageSourceMapping może zawierać packageSource tylko sekcje.

packageSource

Sekcja podrzędna packageSourceMapping sekcji. Zawiera mapowanie, które pomaga NuGet określić, czy źródło powinno być brane pod uwagę do pobierania pakietu zainteresowań.

Klucz
Nazwa źródła pakietu zadeklarowanego w packageSources sekcji . Klucz musi dokładnie odpowiadać kluczowi źródła pakietu.

Sekcje packageSource w obszarze packageSourceMapping są jednoznacznie identyfikowane przez element key.

package

Element package jest częścią packageSource sekcji .

Wzorzec
Wzorzec zdefiniowany przez składnię mapowania źródła pakietu.

Przykład:

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

packageManagement section (sekcja packageManagement)

Ustawia domyślny format zarządzania pakietami , packages.config lub PackageReference. Projekty w stylu zestawu SDK zawsze używają funkcji PackageReference.

Key Wartość
format Wartość logiczna wskazująca domyślny format zarządzania pakietami. Jeśli 1format to PackageReference. Jeśli 0format to packages.config.
wyłączone Wartość logiczna wskazująca, czy wyświetlić monit o wybranie domyślnego formatu pakietu podczas pierwszej instalacji pakietu. False ukrywa monit.

Przykład:

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

Napiwek

Gdy <clear /> jest obecny dla danego węzła, NuGet ignoruje wcześniej zdefiniowane wartości konfiguracji dla tego węzła. Dowiedz się więcej o sposobie stosowania ustawień.

Korzystanie ze zmiennych środowiskowych

Aby zastosować ustawienia w czasie wykonywania, można użyć zmiennych środowiskowych w nuget.config wartościach (NuGet 3.4 lub nowszych).

Jeśli na przykład zmienna HOME środowiskowa w systemie Windows jest ustawiona na c:\users\username, wartość %HOME%\NuGetRepository w pliku konfiguracji jest rozpoznawana jako c:\users\username\NuGetRepository.

Należy pamiętać, że należy używać zmiennych środowiskowych w stylu systemu Windows (rozpoczyna się i kończy się %) nawet w systemie Mac/Linux. Posiadanie $HOME/NuGetRepository w pliku konfiguracji nie rozwiąże problemu. W systemie Mac/Linux wartość parametru %HOME%/NuGetRepository zostanie rozpoznana na /home/myStuff/NuGetRepositorywartość .

Jeśli zmienna środowiskowa nie zostanie znaleziona, program NuGet używa wartości literału z pliku konfiguracji. Na przykład %MY_UNDEFINED_VAR%/NuGetRepository zostanie rozpoznana jako path/to/current_working_dir/$MY_UNDEFINED_VAR/NuGetRepository

W poniższej tabeli przedstawiono składnię zmiennych środowiska i obsługę separatora ścieżek dla plików NuGet.Config.

NuGet.Config obsługa zmiennych środowiskowych

Składnia Separator dir Nuget.exe systemu Windows Dotnet.exe systemu Windows Nuget.exe dla komputerów Mac (w mono) Dotnet.exe dla komputerów Mac
%MY_VAR% / Tak Tak Tak Tak
%MY_VAR% \ Tak Tak Nie. Nie.
$MY_VAR / Nie. Nie. Nie. Nie.
$MY_VAR \ Nie. Nie. Nie. Nie.

Przykładowy plik konfiguracji

Poniżej znajduje się przykładowy nuget.config plik ilustrujący szereg ustawień, w tym opcjonalne:

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