packages.config — dokumentacja

Plik packages.config jest używany w niektórych typach projektów do obsługi listy pakietów, do których odwołuje się projekt. Dzięki temu program NuGet może łatwo przywrócić zależności projektu, gdy projekt ma zostać przewieziony na inną maszynę, taką jak serwer kompilacji, bez wszystkich tych pakietów.

Jeśli jest używany, packages.config musi znajdować się w katalogu głównym projektu. Jest on tworzony automatycznie po uruchomieniu pierwszej operacji NuGet, ale można go również utworzyć ręcznie przed uruchomieniem dowolnych poleceń, takich jak nuget restore.

Projekty korzystające z funkcji PackageReference nie używają elementu packages.config.

Schemat

Schemat jest prosty: po standardowym nagłówku XML jest jeden <packages> węzeł, który zawiera jeden lub więcej <package> elementów, jeden dla każdego odwołania. Każdy <package> element może mieć następujące atrybuty:

Atrybut Wymagania Opis
identyfikator Tak Identyfikator pakietu, taki jak Newtonsoft.json lub Microsoft.AspNet.Mvc.
version Tak Dokładna wersja pakietu do zainstalowania, taka jak 3.1.1 lub 4.2.5.11-beta. Ciąg wersji musi zawierać co najmniej trzy liczby; czwarty jest opcjonalny, podobnie jak sufiks wersji wstępnej. Zakresy są niedozwolone.
targetFramework Nie. Moniker platformy docelowej (TFM) do zastosowania podczas instalowania pakietu. Jest to początkowo ustawione na element docelowy projektu po zainstalowaniu pakietu. W związku z tym różne elementy mogą mieć różne <package> moduły TFM. Jeśli na przykład utworzysz projekt przeznaczony dla platformy .NET 4.5.2, pakiety zainstalowane w tym momencie będą używać programu TFM net452. Jeśli użytkownik ; później ponownie pobierz projekt do platformy .NET 4.6 i dodaj więcej pakietów. Będą one używać programu TFM net46. Niezgodność między elementem docelowym targetFramework i atrybutami projektu spowoduje wygenerowanie ostrzeżeń, w tym przypadku można ponownie zainstalować pakiety, których dotyczy problem.
allowedVersions Nie. Zakres dozwolonych wersji tego pakietu stosowanego podczas aktualizacji pakietu (zobacz Ograniczenia dotyczące wersji uaktualnienia. Nie ma to wpływu na pakiet instalowany podczas operacji instalacji lub przywracania. Zobacz Przechowywanie wersji pakietów w celu uzyskania składni. Interfejs użytkownika packageManager wyłącza również wszystkie wersje poza dozwolonym zakresem.
developmentDependency Nie. Jeśli sam projekt zużywający tworzy pakiet NuGet, ustawienie go na true wartość dla zależności uniemożliwia dołączanie tego pakietu podczas tworzenia pakietu zużywanego. Wartość domyślna to false.

Przykłady

packages.config Poniżej przedstawiono dwa zależności:

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

Poniżej packages.config odwołuje się do dziewięciu pakietów, ale Microsoft.Net.Compilers nie zostaną uwzględnione podczas kompilowania pakietu zużywanego z powodu atrybutu developmentDependency . Odwołanie do pliku Newtonsoft.Json ogranicza również aktualizacje tylko do wersji 8.x i 9.x.

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