nuget.config 参照

NuGet のビヘイビアーは、共通 NuGet 構成 に記載されているように NuGet.Configまたはnuget.configの異なるファイルでの設定によって制御されます。

nuget.config は、最上位の <configuration> ノードを含む XML ファイルであり、このトピックで説明するセクション要素が含まれます。 各セクションにゼロ 個以上の項目を含む。 「examples config file」 (構成ファイルの例) を参照してください。 名前の設定には大文字と小文字の区別があり、値には環境変数を使用することができます。

ヒント

プロジェクト リポジトリのルートに nuget.config ファイルを追加します。 これにより再現性が高まり、異なるユーザーの NuGet 構成が同一になるため、ベスト プラクティスと考えられています。 ユーザーまたはマシン固有の構成が適用されないように、clear要素を構成する必要がある場合があります。 設定の適用方法について詳しくは、こちらをご覧ください

config セクション

nuget config コマンドを使用して設定できる、さまざまな構成設定が含まれます。

注: dependencyVersionrepositoryPath については、packages.config を使用するプロジェクトのみに適用されます。 globalPackagesFolder は PackageReference 形式を使用するプロジェクトのみに適用されます。

Key Value
dependencyVersion (packages.config のみ) -DependencyVersion スイッチが直接指定されない場合の、パッケージのインストール、復元、および更新における既定の DependencyVersion 値です。 この値は、NuGet パッケージ マネージャー UI でも使用されます。 値は LowestHighestPatchHighestMinorHighest となります。
globalPackagesFolder (PackageReference のみ使用するプロジェクト) 既定のグローバル パッケージ フォルダーの場所です。 既定値は、%userprofile%\.nuget\packages (Windows) または ~/.nuget/packages (Mac/Linux) です。 相対パスは、プロジェクト固有の nuget.config ファイルで使用できます。 この設定は、環境変数によって NUGET_PACKAGES オーバーライドされます。この設定が優先されます。
repositoryPath (packages.config のみ) 既定の $(Solutiondir)/packages フォルダーではなく、NuGet パッケージをインストールする場所です。 相対パスは、プロジェクト固有の nuget.config ファイルで使用できます。
defaultPushSource 操作に対してパッケージ ソースが他に見つからない場合に、既定値として使用すべきパッケージ ソースの URL またはパスを識別します。
http_proxy http_proxy.user http_proxy.password no_proxy パッケージ ソースに接続するときに使用するプロキシ設定です。http_proxy の形式は http://<username>:<password>@<domain> とする必要があります。 パスワードは暗号化され、手動で追加することはできません。 no_proxy の場合、値はドメイン、バイパス、プロキシ サーバーのコンマ区切りのリストとなります。 これらの値に対して http_proxy および no_proxy の環境変数を使用することもできます。 詳細については、「NuGet proxy settings」 (NuGet プロキシ設定) (skolima.blogspot.com) を参照してください。
maxHttpRequestsPerSource パッケージ依存関係の解決とダウンロードのために NuGet からすべてのパッケージ ソースに送信される並列要求の最大数を制御。 既定値 dotnet.exe は、 Int32.MaxValue プロパティから HttpClientHandler.MaxConnectionsPerServer 派生します。 この設定は、開いているファイルエラーが多くなりすぎないように16までに調整制限が設定されているため、Mac OSについてdotnet.exeへの影響はありません。 Visual Studioなどの.NET Frameworkで実行されているNuGet client toolsの既定値とnuget.exeMonoでのWindows1にある64です。 Packages.configスタイルプロジェクトの既定値はEnvironment.ProcessorCountにセットされます。 maxHttpRequestsPerSourceプロパティをデフォルトより小さい値に構成 すると、NuGet のパフォーマンスに影響する可能性があります。
signatureValidationMode パッケージのインストールと復元のパッケージ署名の検証に使用する検証モードを指定します。 値はaccept,requireです。 既定値は accept です。

例:

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

bindingRedirects セクション

パッケージのインストール時に、NuGet で自動バインド リダイレクトを実行するかどうかを構成します。

Key Value
skip 自動バインド リダイレクトを省略するかどうかを示すブール値です。 既定値は false です。

例:

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

packageRestore セクション

ビルド時のパッケージの復元を制御します。

Key Value
有効 NuGet で自動復元を実行できるかどうかを示すブール値です。 構成ファイル内にこのキーを設定するのでなく、True の値で EnableNuGetPackageRestore 環境変数を設定することもできます。
automatic ビルド中に欠落しているパッケージの確認を NuGet で行う必要があるかどうかを示すブール値です。

例:

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

solution セクション

ソリューションの packages フォルダーをソース管理に含めるかどうかを制御します。 このセクションは、ソリューション フォルダー内の nuget.config ファイルでのみ機能します。

Key Value
disableSourceControlIntegration ソース管理を使用する場合に、パッケージ フォルダーを無視するかどうかを示すブール値です。 既定値は false です。

例:

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

パッケージ ソース セクション

packageSourcespackageSourceCredentialsapikeysactivePackageSourcedisabledPackageSourcestrustedSignerspackageSourceMapping のすべての連携によって、インストール、復元、および更新の操作中にパッケージ リポジトリを NuGet で操作する方法が構成されます。

これらの設定を管理するために、通常は、 nuget sources コマンド が使用されます。ただしapikeysの場合は例外であり nuget setapikey コマンドによって管理され、trustedSignersnuget trusted-signers コマンドを使用して管理されます。

ここで、nuget.org のソース URL は https://api.nuget.org/v3/index.json となります。

packageSources

すべての既知のパッケージ ソースの一覧を表示します。 復元操作中、および PackageReference 形式を使用するプロジェクトでは、順序は無視されます。 NuGet では、次を使用 packages.configするプロジェクトでのインストール操作と更新操作のソースの順序が考慮されます。

XML 属性 パーパス
Key (パッケージ ソースに割り当てる名前)
Value パッケージ ソースのパスまたは URL です。
protocolVersion 使用する NuGet サーバー プロトコルのバージョン。 現行バージョンは "3" です。 パッケージ ソース URL が.jsonである末尾 (例:https://api.nuget.org/v3/index.json ) を指していない場合、既定ではバージョン "2" になります。 NuGet 3.0 以降で対応しています。 バージョン 3 プロトコルの詳細については 、NuGet Server API を参照してください。
allowInsecureConnections false の場合、または指定されていない場合、ソースが https ではなく http を使用すると、NuGet によって警告が生成されます。 このソースとの通信が傍受攻撃の危険に合うことはないと確信できれば、値を true に設定して警告を抑制できます。 NuGet 6.8 以降で対応しています。

例:

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

Note

CLI を使用する場合は、RestoreSourcesMSBuild プロパティまたは --source(.NET CLI) | -Source(NuGet CLI) を表して、NuGet.config で定義されている<packageSources>をオーバーライドできます。

ヒント

指定されたノードに <clear /> が存在すると、そのノードより前に定義された構成値は無視されます。 設定の適用方法について詳しくは、こちらをご覧ください

packageSourceCredentials

通常、-username スイッチおよび -password スイッチと nuget sources によって指定される、ソースのユーザー名とパスワードを格納します。 -storepasswordincleartext オプションが使用されていない場合、既定ではパスワードが暗号化されます。 必要に応じて、スイッチで有効な認証の種類を -validauthenticationtypes 指定できます。

Key
username プレーン テキストで表されるソースのユーザー名です。 注: 環境変数は、セキュリティを強化するために使用できます。
password ソースの暗号されたパスワードです。 暗号化されたパスワードは Windows でのみ対応し、同じコンピューター上で、元の暗号化と同じユーザーを介して使用する場合にのみ暗号化を解除できます。
cleartextpassword ソースの暗号化されていないパスワードです。 注: 環境変数は、セキュリティを強化するために使用できます。
validauthenticationtypes このソースに対して有効な認証の種類のコンマ区切りのリスト。 サーバーによって NTLM または Negotiate がアドバタイズされていて、基本メカニズムを使用して資格情報を送信する必要がある場合は、これを basic に設定します。例えば、オンプレミスの Azure DevOps Server で PAT を使用する場合などです。 その他の有効な値には、negotiatekerberosntlmdigest などがありますが、これらの値は役に立たない可能性があります。

警告

パスワードをクリア テキストで格納しないよう、強くお勧めします。 暗号化されたパスワードは Windows でのみサポートされることに注意してください。 さらに、暗号化を解除できるのは、同じコンピューター上で、最初に暗号化した同じユーザーが使用した場合のみです。 資格情報を安全に管理する方法の詳細については、プライベート フィードからパッケージを使用するためのセキュリティのベスト プラクティスを参照してください。

ヒント

[パラメーターが正しくありません]というエラー メッセージに対してpassword暗号化されていないパスワードが渡された場合は発生します。

例:

構成ファイル内の <packageSourceCredentials> 要素には、適用可能なソース名ごとに子ノードが含まれます (名前内のスペースは _x0020_ と置換されます)。 つまり、"Contoso" および "Test Source" という名前のソースの場合は、暗号化されたパスワードを使用するとき、構成ファイルには次の内容が含まれます。

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

また、有効な認証方法を指定できます。

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

環境変数に格納されている暗号化されていないパスワードを使用する場合:

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

暗号化されていないパスワードを使用する場合:

警告

パスワードをクリア テキストで格納しないよう、強くお勧めします。

<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

nuget setapikey コマンドで設定される、API キー認証を使用するソースのキーを格納します。

Key Value
(ソース URL) 暗号化された API キー。

例:

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

disabledPackageSources

現在無効になっているソースを識別します。 空でもかまいません。 このセクションで特定のソースが無効になっていない限り、有効になります。

Key Value
(ソースの名前) ソースが無効になっているかどうかを示すブール値です。

例:

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

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

上記の例で、パッケージ ソース Contoso は無効で、パッケージのダウンロードやインストールには使用されません。

activePackageSource

(2.x のみ。3.x 以降では非推奨とされます)

現在アクティブなソースを識別し、すべてのソースの集計を示します。

Key Value
(ソースの名前) または All キーがソースの名前である場合は、ソースのパスまたは URL が値となります。 All の場合は、値を (Aggregate source) にして、無効になっていないすべてのパッケージ ソースを結合する必要があります。

例:

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

信頼されている署名者 セクション

インストールまたは復元中にパッケージを許可するために使用される信頼された署名者を格納します。 このリストは、ユーザーが 〘 に設定 signatureValidationMode するときに空に requireすることはできません。

このセクションは、コマンドを使用してnuget trusted-signers更新できます。

[スキーマ]:

信頼されたサイナーには、特定のサイナーを識別するすべての証明書を登録するcertificateアイテムのコレクションがあります。 信頼できるサイナーには、AuthorRepositoryのいずれかを指定できます。

信頼されたリポジトリでは、リポジトリのserviceIndex (有効な https URI である必要があります) も指定し、オプションでセミコロン区切りのownersのリストを指定して、その特定のリポジトリから信頼されているユーザーをさらに制限することもできます。

証明書フィンガープリントに使用される対応しているハッシュ アルゴリズムは、次のとおりですSHA256SHA512SHA384

certificate指定された証明書としてtrue指定allowUntrustedRootされている場合、署名検証の一環として証明書チェーンを構築するときに、信頼されていないrootにチェーンできます。

例:

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

fallbackPackageFoldersセクション

(3.5 以降) フォールバック フォルダーにパッケージが見つかった場合に作業を行う必要がないように、パッケージをプレインストールする方法を提供します。 フォールバック パッケージ フォルダーにグローバル パッケージ フォルダーとまったく同じフォルダーとファイル構造があります。 .nupkg が存在し、すべてのファイルが抽出されます。

この構成のリファレンスロジックは次のとおりです。

  • グローバル パッケージ フォルダーを調べ、パッケージ/バージョンが既にダウンロードされているかどうかを確認します。

  • フォールバック フォルダーでパッケージ/バージョンの一致を確認します。

検索が成功した場合、ダウンロードは不要。

一致が見つからない場合、NuGet はファイル ソースをチェックしてから http ソースをダウンロードし、パッケージをダウンロードします。

Key Value
(フォールバック フォルダーの名前) フォールバック フォルダーへのパス。

例:

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

パッケージのソース マップセクション

この packageSourceMapping セクションには、NuGet パッケージ操作でパッケージ ID のダウンロード先を決定するのに役立つ詳細を含む。

このセクションは、現在、手動でのみ管理できます。

packageSourceMappingセクションには packageSource セクションのみを包含できます。

packageSource

packageSourceMapping セクションのサブセクション NuGet が目的のパッケージをダウンロードするためにソースを考慮する必要があるかどうかを判断するのに役立つマッピングを含む。

キー
セクションで宣言されているパッケージ ソースの packageSources 名前。 キーは、パッケージ ソースのキーと完全に一致する必要があります。

packageSourceMappingの下のpackageSourceセクションはkeyで一意識別されます。

パッケージ

package セクションの packageSource 一部です。

パターン
パッケージ ソース マップの 構文 によって定義されるパターン。

例:

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

packageManagement セクション

既定のパッケージ管理形式 (packages.config または PackageReference) を設定します。 SDK スタイルのプロジェクトでは、常に PackageReference が使用されます。

Key Value
format デフォルトパッケージ マネージャー形式を示すブール値。 1の場合、形式は PackageReference です。 0の場合、形式は packages.config です。
disabled 最初のパッケージのインストール時にデフォルトパッケージ形式を選択するように求めるプロンプトを表示するかどうかを示すブール値。 False はプロンプトを非表示にする。

例:

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

ヒント

指定されたノードに <clear /> が存在すると、そのノードより前に定義された構成値は無視されます。 設定の適用方法について詳しくは、こちらをご覧ください

環境変数の使用

環境変数を nuget.config 値 (NuGet 3.4 以降) に使用することで、実行時に設定を適用できます。

例えば、Windows 上の HOME 環境変数を c:\users\username に設定すると、構成ファイル内の %HOME%\NuGetRepository の値は c:\users\username\NuGetRepository に解決されます。

Mac/Linux でも Windows スタイルの環境変数 (開始と終了は %) を使用する必要があることに注意してください。 $HOME/NuGetRepository構成ファイルに含まれると解決することができません。 Mac/Linux では、値 %HOME%/NuGetRepository/home/myStuff/NuGetRepository.

環境変数が見つからない場合、NuGet は構成ファイルからのリテラル値を使用します。 例えば %MY_UNDEFINED_VAR%/NuGetRepository 、次のように解決されます。 path/to/current_working_dir/$MY_UNDEFINED_VAR/NuGetRepository

次の表は、NuGet.Config ファイルの環境変数の構文とパス区切り記号対応を示しています。

NuGet.Config 環境変数に対応

構文 ディレクトリ区切り記号 Windows nuget.exe Windows dotnet.exe Mac nuget.exe (Mono 内) Mac dotnet.exe
%MY_VAR% / はい イエス イエス イエス
%MY_VAR% \ イエス はい いいえ 番号
$MY_VAR / 番号 番号 番号 番号
$MY_VAR \ 番号 番号 番号 いいえ

構成ファイルの例

オプションの設定を含む複数の設定を示す nuget.config ファイルの例を次に示します:

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