nuget.config Verweis

NuGet Verhalten wird durch Einstellungen in verschiedenen NuGet.Config - oder nuget.config -Dateien gesteuert, wie unter NuGet.Configbeschrieben.

nuget.config ist eine XML-Datei mit einem <configuration>-Knoten der obersten Ebene, in dem die in diesem Thema beschriebenen Abschnittselemente beschrieben werden. Jeder Abschnitt enthält null oder mehr Elemente. Siehe die Beispiele für die Konfigurationsdatei. Bei Einstellungsnamen ist die Groß-/Kleinschreibung zu beachten, und Werte können Umgebungsvariablen verwenden.

Abschnitt „config“

Enthält verschiedene Konfigurationseinstellungen, die mit dem Befehlfestgelegt werden können.

dependencyVersion und repositoryPath gelten nur für Projekte, die packages.config verwenden. globalPackagesFolder gilt nur für Projekte, die das PackageReference-Format verwenden.

Schlüssel Wert
dependencyVersion (nur packages.config) Der DependencyVersion-Standardwert für „package install“, „restore“ und „update“, wenn der -DependencyVersion-Switch nicht direkt angegeben ist. Dieser Wert wird auch von der Benutzeroberfläche des NuGet-Paket-Managers verwendet. Die Werte lauten Lowest, HighestPatch, HighestMinor, Highest.
globalPackagesFolder (Projekte, die nur PackageReference verwenden) Der Speicherort des Standardordners für globale Pakete. Der Standardwert lautet %userprofile%\.nuget\packages (Windows) oder ~/.nuget/packages (Mac/Linux). Ein relativer Pfad kann in projektspezifischen nuget.config-Dateien verwendet werden. Diese Einstellung wird von der NUGET_PACKAGES Umgebungsvariablen überschrieben, die Vorrang hat.
repositoryPath (nur packages.config) Die Position anstelle des Standardordners $(Solutiondir)/packages, an der NuGet-Pakete installiert werden sollen. Ein relativer Pfad kann in projektspezifischen nuget.config-Dateien verwendet werden. Diese Einstellung wird von der NUGET_PACKAGES Umgebungsvariablen überschrieben, die Vorrang hat.
defaultPushSource Gibt die URL oder den Pfad der Paketquelle an, die bzw. der als Standard verwendet werden sollte, wenn für einen Vorgang keine anderen Paketquellen gefunden werden können.
http_proxy http_proxy.user http_proxy.password no_proxy Proxyeinstellungen, die beim Herstellen einer Verbindung zu Paketquellen verwendet werden sollen; http_proxy sollte das Format http://<username>:<password>@<domain> aufweisen. Kennwörter sind verschlüsselt und können nicht manuell hinzugefügt werden. Bei no_proxy ist der Wert eine durch Kommas getrennte Liste mit Domänen, die den Proxy-Server umgehen. Alternativ können Sie für diese Werte die Umgebungsvariablen „http_proxy“ und „no_proxy“ verwenden. Weitere Informationen finden Sie unter NuGet proxy settings (NuGet-Proxyeinstellungen) (skolima.blogspot.com).
signatureValidationMode Gibt den Validierungsmodus an, der zum Überprüfen von Paketsignaturen für die Paketinstallation und -wiederherstellung verwendet wird. Die Werte sind accept , require . Wird standardmäßig auf accept festgelegt.

Beispiel:

<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" />
</config>

Abschnitt „bindingRedirects“

Konfiguriert, ob NuGet bei der Installation eines Pakets automatische Bindungsumleitungen durchführt.

Schlüssel Wert
skip Ein boolescher Wert, der angibt, ob automatische Bindungsumleitungen übersprungen werden sollen. Die Standardeinstellung ist „false“.

Beispiel:

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

Abschnitt „packageRestore“

Steuert die Paketwiederherstellung während der Erstellung von Builds.

Schlüssel Wert
enabled Ein boolescher Wert, der angibt, ob NuGet eine automatische Wiederherstellung durchführen kann. Sie können die Umgebungsvariable EnableNuGetPackageRestore auch mit dem Wert True festlegen, statt diesen Schlüssel in der Konfigurationsdatei festzulegen.
automatic Ein boolescher Wert, der angibt, ob NuGet während der Erstellung eines Builds eine Überprüfung auf fehlende Pakete durchführen sollte.

Beispiel:

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

Abschnitt „solution“

Steuert, ob der Ordner packages einer Projektmappe in der Quellcodeverwaltung enthalten ist. Dieser Abschnitt funktioniert nur in Dateien vom Typ nuget.config in einem Projektmappenordner.

Schlüssel Wert
disableSourceControlIntegration Ein boolescher Wert, der angibt, ob der Paketordner während der Arbeit mit der Quellcodeverwaltung ignoriert werden soll. Der Standardwert ist „FALSE“.

Beispiel:

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

Paketquellenabschnitte

Die , packageSources , , , und arbeiten packageSourceCredentialsapikeysactivePackageSourcedisabledPackageSourcestrustedSignerspackageSourceMapping zusammen, um zu konfigurieren, wie NuGet bei Installations-, Wiederherstellungs- und Updatevorgängen mit Paketrepositorys funktioniert.

Der Befehl wird im Allgemeinen verwendet, um diese Einstellungen zu verwalten, mit Ausnahme von apikeys , das mit dem apikeysverwaltet wird und der mit dem trustedSignersnuget setapikeyverwaltet wird.

Beachten Sie, dass die Quell-URL für nuget.org https://api.nuget.org/v3/index.json ist.

packageSources

Listet alle bekannte Paketquellen auf. Die Reihenfolge wird bei Wiederherstellungsvorgängen und bei jedem Projekt mit dem PackageReference-Format ignoriert. NuGet beachtet die Reihenfolge der Quellen für Installations- und Updatevorgänge mit Projekten, die packages.config verwenden.

Schlüssel Wert
(Der Name, der der Paketquelle zuzuweisen ist) Der Pfad oder die URL der Paketquelle.

Beispiel:

<packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Contoso" value="https://contoso.com/packages/" />
    <add key="Test Source" value="c:\packages" />
</packageSources>

Tipp

Wenn <clear /> für einen bestimmten Knoten vorhanden ist, ignoriert NuGet die zuvor definierten Konfigurationswerte für diesen Knoten. Erfahren Sie mehr darüber, wie Einstellungen angewendet werden.

packageSourceCredentials

Speichert Benutzernamen und Kennwörter für Quellen, die in der Regel mit den -username- und -password-Switches mit nuget sources angegeben werden. Kennwörter werden standardmäßig verschlüsselt, sofern die Option -storepasswordincleartext nicht ebenfalls verwendet wird. Optional können gültige Authentifizierungstypen mit dem Schalter angegeben -validauthenticationtypes werden.

Schlüssel Wert
username Der Benutzername für die Quelle in Nur-Text.
password Das verschlüsselte Kennwort für die Quelle. Verschlüsselte Kennwörter werden nur auf Windows unterstützt und können nur entschlüsselt werden, wenn sie auf demselben Computer und über denselben Benutzer wie die ursprüngliche Verschlüsselung verwendet werden.
cleartextpassword Das unverschlüsselte Kennwort für die Quelle. Hinweis: Umgebungsvariablen können zur Verbesserung der Sicherheit verwendet werden.
validauthenticationtypes Durch Trennzeichen getrennte Liste mit gültigen Authentifizierungstypen für diese Quelle. Legen Sie diese Option auf basic fest, wenn der Server NTLM oder eine Aushandlung ankündigt und Ihre Anmeldedaten über den Basismechanismus gesendet werden müssen, z. B. bei Verwendung eines persönlichen Zugriffstokens (PAT) mit einer lokalen Azure DevOps Server-Instanz. Andere gültige Werte sind negotiate, kerberos, ntlm und digest, aber diese Werte sind wahrscheinlich nicht sinnvoll.

Beispiel:

In der Konfigurationsdatei enthält das <packageSourceCredentials>-Element für jeden anwendbaren Quellennamen untergeordnete Knoten (Leerzeichen im Namen werden durch _x0020_ ersetzt). Das heißt, die Konfigurationsdatei enthält für Quellen mit dem Namen „Contoso“ und „Testquelle“ bei der Verwendung verschlüsselter Kennwörter Folgendes:

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

Bei Verwendung unverschlüsselter Kennwörter, die in einer Umgebungsvariablen gespeichert sind:

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

Bei der Verwendung unverschlüsselter Kennwörter:

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

Darüber hinaus können gültige Authentifizierungsmethoden bereitgestellt werden:

<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="ClearTextPassword" value="hal+9ooo_da!sY" />
        <add key="ValidAuthenticationTypes" value="basic, negotiate" />
    </Test_x0020_Source>
</packageSourceCredentials>

apikeys

Speichert Schlüssel für Quellen, die die API-Schlüsselauthentifizierung verwenden, wie mit dem Befehl festgelegt.

Schlüssel Wert
(Quell-URL) Der verschlüsselte API-Schlüssel.

Beispiel:

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

disabledPackageSources

Identifizierte, derzeit deaktivierte Quellen. Kann leer sein.

Schlüssel Wert
(Name der Quelle) Ein boolescher Wert, der angibt, ob die Quelle deaktiviert ist.

Beispiel:

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

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

activePackageSource

(nur 2.x; Unterstützung in 3.x und höher eingestellt)

Identifiziert die derzeit aktive Quelle oder gibt das Aggregat aller Quellen an.

Schlüssel Wert
(Name der Quelle) oder All Wenn es sich bei dem Schlüssel um den Namen einer Quelle handelt, ist der Wert der Quellpfad oder die URL. Wenn All festgelegt ist, sollte der Wert (Aggregate source) lauten, damit alle Paketquellen kombiniert werden können, die nicht auf andere Weise deaktiviert sind.

Beispiel:

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

TrustedSigners-Abschnitt

Speichert vertrauenswürdige Signierer, die zum Zulassen von Paketen während der Installation oder Wiederherstellung verwendet werden. Diese Liste darf nicht leer sein, wenn der Benutzer auf signatureValidationModerequire legt.

Dieser Abschnitt kann mit dem Befehl aktualisiert werden.

Schema:

Ein vertrauenswürdiger Signator verfügt über eine Sammlung von Elementen, die alle Zertifikate auflisten, die certificate einen bestimmten Signator identifizieren. Ein vertrauenswürdiger Signator kann entweder ein oder Author ein Repository sein.

Ein vertrauenswürdiges Repository gibt auch den für das Repository an (der ein gültiger URI sein muss) und kann optional eine durch Semikolons getrennte Liste von angeben, um noch mehr vertrauenswürdige Personen aus diesem spezifischen Repository httpsowners einzuschränken.

Die unterstützten Hashalgorithmen, die für einen Zertifikatfingerabdruck verwendet SHA256 werden, sind und SHA384SHA512 .

Wenn angibt, dass das gegebene Zertifikat mit einem nicht vertrauenswürdigen Stamm verkettet werden darf, während die Zertifikatkette im Rahmen der certificateallowUntrustedRoottrue Signaturüberprüfung aufbaut.

Beispiel:

<trustedSigners>
    <author name="microsoft">
        <certificate fingerprint="3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <certificate fingerprint="AA12DA22A49BCE7D5C1AE64CC1F3D892F150DA76140F210ABD2CBFFCA2C18A27" 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>

FallbackPackageFolders-Abschnitt

(3.5 und mehr) Bietet eine Möglichkeit zum Vorinstallieren von Paketen, sodass keine Arbeit durchgeführt werden muss, wenn das Paket in den Fallbackordnern gefunden wird. Fallbackpaketordner haben genau dieselbe Ordner- und Dateistruktur wie der globale Paketordner: .nupkg ist vorhanden, und alle Dateien werden extrahiert.

Die Suchlogik für diese Konfiguration ist:

  • Suchen Sie im globalen Paketordner, ob das Paket bzw. die Version bereits heruntergeladen wurde.

  • Suchen Sie in den Fallbackordnern nach einer Übereinstimmung zwischen Paket und Version.

Wenn eine der Sucherfolge erfolgreich ist, ist kein Download erforderlich.

Wenn keine Übereinstimmung gefunden wird, überprüft NuGet die Dateiquellen und dann die HTTP-Quellen und lädt dann die Pakete herunter.

Schlüssel Wert
(Name des Fallbackordners) Pfad zum Fallbackordner.

Beispiel:

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

Abschnitt "Paketquellenzuordnung"

Der Abschnitt enthält die Details, mit denen NuGet Paketvorgänge bestimmen können, wo eine packageSourceMapping Paket-ID heruntergeladen werden soll.

Dieser Abschnitt kann derzeit nur manuell verwaltet werden.

Ein packageSourceMapping Abschnitt darf nur Abschnitte packageSource enthalten.

packageSource

Ein Unterabschnitt des packageSourceMapping Abschnitts. Enthält eine Zuordnung, um NuGet zu bestimmen, ob die Quelle für das Herunterladen des für Sie interessanten Pakets in Betracht gezogen werden soll.

Schlüssel
Der Name einer Paketquelle, die im Abschnitt deklariert packageSources wurde. Der Schlüssel muss genau mit dem Schlüssel der Paketquelle übereinstimmen.

Die packageSource Abschnitte unter werden durch eindeutig packageSourceMappingkey identifiziert.

package

ist package Teil des packageSource Abschnitts.

Muster
Ein Muster, das durch die Syntax der Paketquellenzuordnung definiert wird.

Beispiel:

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

packageManagement-Abschnitt

Legt das Standardformat für die Paketverwaltung fest, entweder packages.config PackageReference. Projekte im SDK-Stil verwenden immer PackageReference.

Schlüssel Wert
format Ein boolescher Wert, der das Standardformat für die Paketverwaltung angibt. Wenn 1 der Wert ist, ist das Format PackageReference. Gibt 0 an, dass das Format 0
deaktiviert Ein boolescher Wert, der angibt, ob die Aufforderung zum Auswählen eines Standardpaketformats bei der ersten Paketinstallierung angezeigt werden soll. False Blendet die Eingabeaufforderung aus.

Beispiel:

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

Tipp

Wenn <clear /> für einen bestimmten Knoten vorhanden ist, ignoriert NuGet die zuvor definierten Konfigurationswerte für diesen Knoten. Erfahren Sie mehr darüber, wie Einstellungen angewendet werden.

Verwenden von Umgebungsvariablen

Sie können Umgebungsvariablen in nuget.config-Werten (NuGet 3.4 und höher) verwenden, um Einstellungen zur Laufzeit anzuwenden.

Wenn die Umgebungsvariable HOME unter Windows beispielsweise auf c:\users\username festgelegt ist, wird der Wert von %HOME%\NuGetRepository in der Konfigurationsdatei in c:\users\username\NuGetRepository aufgelöst.

Beachten Sie, dass Sie umgebungsvariablen Windows (beginnt und endet mit %) auch unter Mac/Linux verwenden müssen. Das $HOME/NuGetRepository Verwenden von in einer Konfigurationsdatei wird nicht gelöst. Unter Mac/Linux wird der Wert %HOME%/NuGetRepository von in /home/myStuff/NuGetRepository gelöst.

Wenn eine Umgebungsvariable nicht gefunden werden kann, verwendet NuGet den Literalwert aus der Konfigurationsdatei. Beispielsweise wird %MY_UNDEFINED_VAR%/NuGetRepository als aufgelöst. path/to/current_working_dir/$MY_UNDEFINED_VAR/NuGetRepository

Die folgende Tabelle zeigt die Syntax der Umgebungsvariablen und die Unterstützung von Pfadtrennzeichen für NuGet.Config Dateien.

NuGet.Config Unterstützung von Umgebungsvariablen

Syntax Trennzeichen "Dir" Windows nuget.exe Windows dotnet.exe Mac nuget.exe (in Mono) Mac dotnet.exe
%MY_VAR% / Ja Ja Ja Ja
%MY_VAR% \ Ja Ja Nein Nein
$MY_VAR / Nein Nein Nein Nein
$MY_VAR \ Nein Nein Nein Nein

Beispielkonfigurationsdatei

Im Folgenden finden Sie eine nuget.config Beispieldatei, die eine Reihe von Einstellungen veranschaulicht, einschließlich optionaler Einstellungen:

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