Informazioni di riferimento su packages.configpackages.config reference

Il file packages.config viene usato in alcuni tipi di progetto per gestire l'elenco dei pacchetti a cui fa riferimento il progetto.The packages.config file is used in some project types to maintain the list of packages referenced by the project. In questo modo NuGet può ripristinare facilmente le dipendenze del progetto quando il progetto devono essere trasportato in un computer diverso, ad esempio un server di compilazione, senza tutti i pacchetti.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.

Se usato, packages.config in genere si trova in una radice del progetto.If used, packages.config is typically located in a project root. Viene creata automaticamente quando viene eseguita la prima operazione NuGet, ma è possibile crearla anche manualmente prima di nuget restoreeseguire qualsiasi comando, ad esempio.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.

I progetti che usano PackageReference non usano packages.config.Projects that use PackageReference do not use packages.config.

SchemaSchema

Lo schema è semplice. Dopo l'intestazione XML standard è presente un singolo nodo <packages> che contiene uno o più elementi <package>, uno per ogni riferimento.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. Ogni elemento <package> può avere gli attributi seguenti:Each <package> element can have the following attributes:

AttributoAttribute ObbligatorioRequired DESCRIZIONEDescription
idid Yes Identificatore del pacchetto, ad esempio Newtonsoft.json o Microsoft.AspNet.Mvc.The identifier of the package, such as Newtonsoft.json or Microsoft.AspNet.Mvc.
versionversion YesYes Versione esatta del pacchetto da installare, ad esempio 3.1.1 o 4.2.5.11-beta.The exact version of the package to install, such as 3.1.1 or 4.2.5.11-beta. La stringa di versione deve includere almeno tre numeri. Il quarto numero è facoltativo, così come un suffisso di versione non definitiva.A version string must have at least three numbers; a fourth is optional, as is a pre-release suffix. Non sono consentiti intervalli.Ranges are not allowed.
targetFrameworktargetFramework NoNo Moniker del framework di destinazione (TFM) da applicare durante l'installazione del pacchetto.The target framework moniker (TFM) to apply when installing the package. Viene inizialmente impostato sulla destinazione del progetto quando viene installato un pacchetto.This is initially set to the project's target when a package is installed. Ne consegue che elementi <package> diversi possono avere moniker del framework di destinazione differenti.As a result, different <package> elements can have different TFMs. Ad esempio, se si crea un progetto destinato a .NET 4.5.2, i pacchetti installati in quel punto useranno il moniker del framework di destinazione net452.For example, if you create a project targeting .NET 4.5.2, packages installed at that point will use the TFM of net452. Se in un secondo momento si imposta .NET 4.6 come destinazione del progetto e si aggiungono altri pacchetti, questi useranno il moniker del framework di destinazione net46.If you ;later retarget the project to .NET 4.6 and add more packages, those will use TFM of net46. In caso di mancata corrispondenza tra la destinazione del progetto e gli attributi targetFramework, verranno generati avvisi e in tal caso è possibile reinstallare i pacchetti interessati.A mismatch between the project's target and targetFramework attributes will generate warnings, in which case you can reinstall the affected packages.
allowedVersionsallowedVersions NoNo Intervallo di versioni consentite per questo pacchetto applicate durante l'aggiornamento del pacchetto (vedere Limitazione delle versioni per l'aggiornamento.A range of allowed versions for this package applied during package update (see Constraining upgrade versions. Questo attributo non influisce sul pacchetto installato durante un'operazione di installazione o di ripristino.It does not affect what package is installed during an install or restore operation. Per la sintassi, vedere Controllo delle versioni dei pacchetti.See Package versioning for syntax. Anche l'interfaccia utente di Gestione pacchetti disabilita tutte le versioni non comprese nell'intervallo consentito.The PackageManager UI also disables all versions outside the allowed range.
developmentDependencydevelopmentDependency NoNo Se il progetto stesso che utilizza il pacchetto crea un pacchetto NuGet, l'impostazione di questo attributo su true per una dipendenza impedisce l'inclusione di tale pacchetto quando viene creato il pacchetto utilizzato.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. Il valore predefinito è false.The default is false.

EsempiExamples

Il file packages.config seguente fa riferimento a due dipendenze:The following packages.config refers to two dependencies:

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

Il file packages.config seguente fa riferimento a nove pacchetti, ma Microsoft.Net.Compilers non verrà incluso durante la compilazione del pacchetto utilizzato a causa dell'attributo 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. Il riferimento a Newtonsoft.Json limita inoltre gli aggiornamenti solo alle versioni 8.x e 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"?>
<packages>
  <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="1.0.0.0" 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" />
</packages>