nuget.config
参照
NuGet のビヘイビアーは、共通 NuGet 構成 に記載されているように NuGet.Config
またはnuget.config
の異なるファイルでの設定によって制御されます。
nuget.config
は、最上位の <configuration>
ノードを含む XML ファイルであり、このトピックで説明するセクション要素が含まれます。 各セクションにゼロ 個以上の項目を含む。 「examples config file」 (構成ファイルの例) を参照してください。 名前の設定には大文字と小文字の区別があり、値には環境変数を使用することができます。
ヒント
プロジェクト リポジトリのルートに nuget.config
ファイルを追加します。 これにより再現性が高まり、異なるユーザーの NuGet 構成が同一になるため、ベスト プラクティスと考えられています。
ユーザーまたはマシン固有の構成が適用されないように、clear
要素を構成する必要がある場合があります。 設定の適用方法について詳しくは、こちらをご覧ください。
config セクション
nuget config
コマンドを使用して設定できる、さまざまな構成設定が含まれます。
注: dependencyVersion
とrepositoryPath
については、packages.config
を使用するプロジェクトのみに適用されます。 globalPackagesFolder
は PackageReference 形式を使用するプロジェクトのみに適用されます。
キー | 値 |
---|---|
dependencyVersion (packages.config のみ) |
-DependencyVersion スイッチが直接指定されない場合の、パッケージのインストール、復元、および更新における既定の DependencyVersion 値です。 この値は、NuGet パッケージ マネージャー UI でも使用されます。 値は Lowest 、HighestPatch 、HighestMinor 、Highest となります。 |
globalPackagesFolder | 既定のグローバル パッケージ フォルダーの場所です。 既定値は、%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.exe はMono でのWindows と1 にある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 で自動バインド リダイレクトを実行するかどうかを構成します。
キー | 値 |
---|---|
skip | 自動バインド リダイレクトを省略するかどうかを示すブール値です。 既定値は false です。 |
例:
<bindingRedirects>
<add key="skip" value="True" />
</bindingRedirects>
packageRestore セクション
ビルド時のパッケージの復元を制御します。
キー | 値 |
---|---|
有効 | NuGet で自動復元を実行できるかどうかを示すブール値です。 構成ファイル内にこのキーを設定するのでなく、True の値で EnableNuGetPackageRestore 環境変数を設定することもできます。 |
automatic | ビルド中に欠落しているパッケージの確認を NuGet で行う必要があるかどうかを示すブール値です。 |
例:
<packageRestore>
<add key="enabled" value="true" />
<add key="automatic" value="true" />
</packageRestore>
solution セクション
ソリューションの packages
フォルダーをソース管理に含めるかどうかを制御します。 このセクションは、ソリューション フォルダー内の nuget.config
ファイルでのみ機能します。
キー | 値 |
---|---|
disableSourceControlIntegration | ソース管理を使用する場合に、パッケージ フォルダーを無視するかどうかを示すブール値です。 既定値は false です。 |
例:
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
パッケージ ソース セクション
packageSources
、packageSourceCredentials
、apikeys
、activePackageSource
、disabledPackageSources
、trustedSigners
、packageSourceMapping
のすべての連携によって、インストール、復元、および更新の操作中にパッケージ リポジトリを NuGet で操作する方法が構成されます。
これらの設定を管理するために、通常は、 nuget sources
コマンド が使用されます。ただしapikeys
の場合は例外であり nuget setapikey
コマンドによって管理され、trustedSigners
はnuget trusted-signers
コマンドを使用して管理されます。
ここで、nuget.org のソース URL は https://api.nuget.org/v3/index.json
となります。
packageSources
すべての既知のパッケージ ソースの一覧を表示します。 復元操作中、および PackageReference 形式を使用するプロジェクトでは、順序は無視されます。 NuGet では、次を使用 packages.config
するプロジェクトでのインストール操作と更新操作のソースの順序が考慮されます。
XML 属性 | 目的 |
---|---|
キー | (パッケージ ソースに割り当てる名前) |
値 | パッケージ ソースのパスまたは 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 以降で対応しています。 |
disableTLSCertificateValidation | この構成プロパティを使用すると、HTTPS サーバーの SSL/TLS 証明書の検証を無効にできます。 true に設定すると、サーバーは SSL/TLS 証明書に関連するエラー (期限切れ証明書や自己署名証明書など) を無視し、検証なしで接続を確立します。 NuGet 6.11 以降で対応しています。 |
例:
<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="Invalid-certificate-https-source" value="https://httpsSourceTrusted/" disableTLSCertificateValidation="true" />
<add key="Test Source" value="c:\packages" />
</packageSources>
Note
信頼できるパッケージ ソースを使用します。
Note
CLI を使用する場合は、RestoreSources
MSBuild プロパティまたは --source
(.NET CLI) | -Source
(NuGet CLI) を表して、NuGet.config で定義されている<packageSources>
をオーバーライドできます。
ヒント
指定されたノードに <clear />
が存在すると、そのノードより前に定義された構成値は無視されます。 設定の適用方法について詳しくは、こちらをご覧ください。
auditSources
NuGet Audit が復元時に使用するすべての既知の監査ソースを一覧表示します。
監査ソースが指定されていない場合、復元ではパッケージ ソースが使用され、 NU1905 が抑制されます。
auditSources
が NuGet 6.12 に追加されました。
監査ソースでは、packageSources
(protocolVersion
, allowInsecureConnections
) と同じ属性がサポートされます。認証を必要とするソースは、packageSources
と同じように packageSourceCredentials
で構成されます。
例:
<auditSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</auditSources>
packageSourceCredentials
通常、-username
スイッチおよび -password
スイッチと nuget sources
によって指定される、ソースのユーザー名とパスワードを格納します。 -storepasswordincleartext
オプションが使用されていない場合、既定ではパスワードが暗号化されます。
必要に応じて、スイッチで有効な認証の種類を -validauthenticationtypes
指定できます。
キー | 値 |
---|---|
username | プレーン テキストで表されるソースのユーザー名です。 注: 環境変数は、セキュリティを強化するために使用できます。 |
password | ソースの暗号されたパスワードです。 暗号化されたパスワードは Windows でのみ対応し、同じコンピューター上で、元の暗号化と同じユーザーを介して使用する場合にのみ暗号化を解除できます。 |
cleartextpassword | ソースの暗号化されていないパスワードです。 注: 環境変数は、セキュリティを強化するために使用できます。 |
validauthenticationtypes | このソースに対して有効な認証の種類のコンマ区切りのリスト。 サーバーによって NTLM または Negotiate がアドバタイズされていて、基本メカニズムを使用して資格情報を送信する必要がある場合は、これを basic に設定します。例えば、オンプレミスの Azure DevOps Server で PAT を使用する場合などです。 その他の有効な値には、negotiate 、kerberos 、ntlm 、digest などがありますが、これらの値は役に立たない可能性があります。 |
警告
パスワードをクリア テキストで格納しないよう、強くお勧めします。 暗号化されたパスワードは 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 キー認証を使用するソースのキーを格納します。
キー | 値 |
---|---|
(ソース URL) | 暗号化された API キー。 |
例:
<apikeys>
<add key="https://MyRepo/ES/api/v2/package" value="encrypted_api_key" />
</apikeys>
disabledPackageSources
現在無効になっているソースを識別します。 空でもかまいません。 このセクションで特定のソースが無効になっていない限り、有効になります。
キー | 値 |
---|---|
(ソースの名前) | ソースが無効になっているかどうかを示すブール値です。 |
例:
<disabledPackageSources>
<add key="Contoso" value="true" />
</disabledPackageSources>
<!-- Empty list -->
<disabledPackageSources />
上記の例で、パッケージ ソース Contoso
は無効で、パッケージのダウンロードやインストールには使用されません。
activePackageSource
(2.x のみ。3.x 以降では非推奨とされます)
現在アクティブなソースを識別し、すべてのソースの集計を示します。
キー | 値 |
---|---|
(ソースの名前) または 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
アイテムのコレクションがあります。 信頼できるサイナーには、Author
かRepository
のいずれかを指定できます。
信頼されたリポジトリでは、リポジトリのserviceIndex
(有効な https
URI である必要があります) も指定し、オプションでセミコロン区切りのowners
のリストを指定して、その特定のリポジトリから信頼されているユーザーをさらに制限することもできます。
証明書フィンガープリントに使用される対応しているハッシュ アルゴリズムは、次のとおりですSHA256
SHA512
。 SHA384
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" />
<certificate fingerprint="1F4B311D9ACC115C8DC8018B5A49E00FCE6DA8E2855F9F014CA6F34570BC482D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
<owners>microsoft;aspnet;nuget</owners>
</repository>
</trustedSigners>
fallbackPackageFoldersセクション
(3.5 以降) フォールバック フォルダーにパッケージが見つかった場合に作業を行う必要がないように、パッケージをプレインストールする方法を提供します。 フォールバック パッケージ フォルダーにグローバル パッケージ フォルダーとまったく同じフォルダーとファイル構造があります。 .nupkg が存在し、すべてのファイルが抽出されます。
この構成のリファレンスロジックは次のとおりです。
グローバル パッケージ フォルダーを調べ、パッケージ/バージョンが既にダウンロードされているかどうかを確認します。
フォールバック フォルダーでパッケージ/バージョンの一致を確認します。
検索が成功した場合、ダウンロードは不要。
一致が見つからない場合、NuGet はファイル ソースをチェックしてから http ソースをダウンロードし、パッケージをダウンロードします。
キー | 値 |
---|---|
(フォールバック フォルダーの名前) | フォールバック フォルダーへのパス。 |
例:
<fallbackPackageFolders>
<add key="XYZ Offline Packages" value="C:\somePath\someFolder\"/>
</fallbackPackageFolders>
パッケージのソース マップセクション
この packageSourceMapping
セクションには、NuGet パッケージ操作でパッケージ ID のダウンロード先を決定するのに役立つ詳細を含む。
このセクションは、現在、手動でのみ管理できます。
packageSourceMapping
セクションには packageSource
セクションのみを包含できます。
packageSource
packageSourceMapping
セクションのサブセクション NuGet が目的のパッケージをダウンロードするためにソースを考慮する必要があるかどうかを判断するのに役立つマッピングを含む。
キー |
---|
セクションで宣言されているパッケージ ソースの packageSources 名前。 キーは、パッケージ ソースのキーと完全に一致する必要があります。 |
packageSourceMapping
の下のpackageSource
セクションはkey
で一意識別されます。
package
は package
セクションの packageSource
一部です。
パターン |
---|
パッケージ ソース マップの 構文 によって定義されるパターン。 |
例:
<packageSourceMapping>
<packageSource key="contoso.com">
<package pattern="Contoso.*" />
</packageSource>
</packageSourceMapping>
packageManagement セクション
既定のパッケージ管理形式 (packages.config または PackageReference) を設定します。 SDK スタイルのプロジェクトでは、常に PackageReference が使用されます。
キー | 値 |
---|---|
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" />
<certificate fingerprint="1F4B311D9ACC115C8DC8018B5A49E00FCE6DA8E2855F9F014CA6F34570BC482D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
<owners>microsoft;aspnet;nuget</owners>
</repository>
</trustedSigners>
</configuration>