packages.config 参照packages.config reference

packages.config ファイルは、プロジェクトで参照されるパッケージの一覧を保守管理するために、一部のプロジェクト タイプで使用されます。The packages.config file is used in some project types to maintain the list of packages referenced by the project. それにより、NuGet は、ビルド サーバーなど、別のコンピューターにプロジェクトを転送するとき、一部のパッケージだけでプロジェクトの依存関係を簡単に復元できます。This allows NuGet to easily restore the project's dependencies when the project to be transported to a different machine, such as a build server, without all those packages.

使用する場合、packages.config は通常、プロジェクトのルートにあります。If used, packages.config is typically located in a project root. これは、最初の NuGet 操作の実行時に自動的に作成されますが、nuget restoreなどのコマンドを実行する前に手動で作成することもできます。It's automatically created when the first NuGet operation is run, but can also be created manually before running any commands such as nuget restore.

PackageReferenceを使用するプロジェクトでは、packages.configを使用しません。Projects that use PackageReference do not use packages.config.


このスキーマは単純です。標準の XML ヘッダーは、1 つまたは複数の <packages> 要素を含むシングル <package> ノードです。要素は参照ごとに 1 つになります。The schema is simple: following the standard XML header is a single <packages> node that contains one or more <package> elements, one for each reference. <package> 要素に次の属性を指定できます。Each <package> element can have the following attributes:

属性Attribute 必須Required 説明Description
idid はいYes Newtonsoft.json や Microsoft.AspNet.Mvc など、パッケージの識別子。The identifier of the package, such as Newtonsoft.json or Microsoft.AspNet.Mvc.
バージョンversion はいYes 3.1.1 や など、インストールするパッケージの正確なバージョン。The exact version of the package to install, such as 3.1.1 or バージョン文字列には少なくとも 3 つの数字を含める必要があります。4 番目はプレリリース サフィックスであり、任意です。A version string must have at least three numbers; a fourth is optional, as is a pre-release suffix. 範囲は許可されません。Ranges are not allowed.
targetFrameworktargetFramework いいえNo ターゲット フレームワーク モニカー (TFM) はパッケージのインストール時に適用されます。The target framework moniker (TFM) to apply when installing the package. パッケージのインストール時、これは最初、プロジェクトのターゲットに設定されます。This is initially set to the project's target when a package is installed. 結果的に、異なる <package> 要素に異なる TFM が与えられます。As a result, different <package> elements can have different TFMs. たとえば、.NET 4.5.2 を対象とするプロジェクトを作成する場合、そのポイントでインストールされたパッケージは net452 の TFM を使用します。For example, if you create a project targeting .NET 4.5.2, packages installed at that point will use the TFM of net452. 後でプロジェクトのターゲットを .NET 4.6 に変更し、パッケージを追加する場合、net46 の TFM が使用されます。If you ;later retarget the project to .NET 4.6 and add more packages, those will use TFM of net46. プロジェクトのターゲットと targetFramework 属性に不一致があると警告が出ます。その場合、影響が出たパッケージを再インストールできます。A mismatch between the project's target and targetFramework attributes will generate warnings, in which case you can reinstall the affected packages.
allowedVersionsallowedVersions いいえNo パッケージ更新中に適用された、このパッケージの許可されるバージョンの範囲 (アップグレード バージョンの制約ページをご覧ください)。A range of allowed versions for this package applied during package update (see Constraining upgrade versions. インストール操作中または復元操作中にインストールされるパッケージには影響を与えませんIt does not affect what package is installed during an install or restore operation. 構文については、「Package versioning」(パッケージのバージョン管理) を参照してください。See Package versioning for syntax. PackageManager UI も、許可される範囲外のすべてのバージョンを無効にします。The PackageManager UI also disables all versions outside the allowed range.
developmentDependencydevelopmentDependency いいえNo コンシューミング プロジェクト自体で NuGet パッケージが作成される場合、依存関係に対してこれを true に設定すると、そのパッケージがコンシューミング パッケージの作成時に含まれません。If the consuming project itself creates a NuGet package, setting this to true for a dependency prevents that package from being included when the consuming package is created. 既定では、 falseです。The default is false.


次の packages.config は 2 つの依存関係を参照します。The following packages.config refers to two dependencies:

<?xml version="1.0" encoding="utf-8"?>
  <package id="jQuery" version="3.1.1" targetFramework="net46" />
  <package id="NLog" version="4.3.10" targetFramework="net46" />

次の packages.config は 9 つのパッケージを参照しますが、Microsoft.Net.Compilers 属性に起因し、developmentDependency はコンシューミング パッケージのビルド時に含まれません。The following packages.config refers to nine packages, but Microsoft.Net.Compilers will not be included when building the consuming package because of the developmentDependency attribute. Newtonsoft.Json の参照はまた、更新を 8.x バージョンと 9.x バージョンのみに制限します。The reference to Newtonsoft.Json also restricts updates to 8.x and 9.x versions only.

<?xml version="1.0" encoding="utf-8"?>
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net46" />
  <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net46" developmentDependency="true" />
  <package id="Microsoft.Web.Infrastructure" version="" targetFramework="net46" />
  <package id="Microsoft.Web.Xdt" version="2.1.1" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="8.0.3" allowedVersions="[8,10)" targetFramework="net46" />
  <package id="NuGet.Core" version="2.11.1" targetFramework="net46" />
  <package id="NuGet.Server" version="2.11.2" targetFramework="net46" />
  <package id="RouteMagic" version="1.3" targetFramework="net46" />
  <package id="WebActivatorEx" version="2.1.0" targetFramework="net46" />