Číst v angličtině

Sdílet prostřednictvím


referenční informace k project.json

Důležité

Tento obsah je zastaralý. Projekty by měly používat packages.config formáty PackageReference nebo PackageReference.

NuGet 3.x+

Soubor project.json udržuje seznam balíčků používaných v projektu, označovaný jako formát správy balíčků. packages.config Nahrazuje ale PackageReference 4.0+.

Soubor project.lock.json (popsaný níže) se používá také v projektech, které project.jsonvyužívají .

project.json má následující základní strukturu, kde každý ze čtyř objektů nejvyšší úrovně může mít libovolný počet podřízených objektů:

{
    "dependencies": {
        "PackageID" : "{version_constraint}"
    },
    "frameworks" : {
        "TxM" : {}
    },
    "runtimes" : {
        "RID": {}
    },
    "supports" : {
        "CompatibilityProfile" : {}
    }
}

Závislosti

Vypíše závislosti balíčků NuGet vašeho projektu v následujícím formátu:

"PackageID" : "version_constraint"

Příklad:

"dependencies": {
    "Microsoft.NETCore": "5.0.0",
    "System.Runtime.Serialization.Primitives": "4.0.10"
}

V dependencies této části se v dialogovém okně NuGet Správce balíčků přidá do projektu závislosti balíčků.

ID balíčku odpovídá ID balíčku na nuget.org , stejné jako ID použité v konzole správce balíčků: Install-Package Microsoft.NETCore.

Při obnovování balíčků omezení "5.0.0" verze implikuje >= 5.0.0. To znamená, že pokud na serveru není k dispozici verze 5.0.0, ale verze 5.0.1 je, NuGet nainstaluje verzi 5.0.1 a upozorní vás na upgrade. NuGet jinak vybere nejnižší možnou verzi na serveru, která odpovídá omezení.

Další podrobnosti o pravidlech řešení najdete v tématu Řešení závislostí.

Správa prostředků závislostí

Které prostředky ze závislostí proudí do projektu nejvyšší úrovně, se řídí zadáním čárkami oddělené sady značek v include odkazu na závislost a exclude vlastnosti odkazu na závislost. Značky jsou uvedené níže v tabulce:

Zahrnout nebo vyloučit značku Ovlivněné složky cíle
contentFiles Content
modul runtime Modul runtime, prostředky a FrameworkAssemblies
kompilovat Lib
build sestavení (props a cíle NÁSTROJE MSBuild)
nativní nativní
Žádná Žádné složky
vše Všechny složky

Značky zadané s exclude předností před značkami zadanými pomocí include. Například trasa include="runtime, compile" exclude="compile" je stejná jako include="runtime".

Pokud chcete například zahrnout build a native složky závislosti, použijte následující:

{
  "dependencies": {
    "packageA": {
      "version": "1.0.0",
      "include": "build, native"
    }
  }
}

K vyloučení content závislostí a build složek použijte následující:

{
  "dependencies": {
    "packageA": {
      "version": "1.0.0",
      "exclude": "contentFiles, build"
    }
  }
}

Architektury

Uvádí architektury, na které projekt běží, například net45, netcoreapp, netstandard.

"frameworks": {
    "netcore50": {}
    }

V oddílu frameworks je povolená pouze jedna položka. (Výjimkou jsou project.json soubory pro ASP.NET projekty, které se sestavují s zastaralým řetězem nástrojů DNX, který umožňuje více cílů.)

Runtime

Uvádí operační systémy a architektury, na kterých vaše aplikace běží, například win10-arm, win8-x64. win8-x86

"runtimes": {
    "win10-arm": { },
    "win10-arm-aot": { },
    "win10-x86": { },
    "win10-x86-aot": { },
    "win10-x64": { },
    "win10-x64-aot": { }
}

Balíček obsahující pcL, který může běžet v jakémkoli modulu runtime, nemusí zadávat modul runtime. To také musí být pravdivé pro všechny závislosti, jinak musíte zadat moduly runtime.

Podporuje

Definuje sadu kontrol závislostí balíčku. Můžete definovat, kde se má pcL nebo aplikace spouštět. Definice nejsou omezující, protože váš kód může být schopen spustit jinde. Zadáním těchto kontrol ale NuGet zkontrolujete, jestli jsou všechny závislosti na uvedených počítačích TxM splněné. Příklady hodnot pro toto jsou: net46.app, uwp.10.0.appatd.

Tento oddíl by se měl automaticky naplnit, když vyberete položku v dialogovém okně Cíle knihovny přenosných tříd.

"supports": {
    "net46.app": {},
    "uwp.10.0.app": {}
}

Importy

Importy jsou navržené tak, aby umožňovaly, aby balíčky, které používají dotnet TxM, fungovaly s balíčky, které deklarují dotnet TxM. Pokud váš projekt používá dotnet TxM, pak všechny balíčky, na kterých jste závislí, musí mít dotnet také TxM, pokud do svého project.json zařízení nepřidáte následující možnosti, abyste umožnili kompatibilitu jiných dotnet platforem dotnet:

"frameworks": {
    "dotnet": { "imports" : "portable-net45+win81" }
}

Pokud používáte dotnet TxM, přidá systém projektu PCL odpovídající imports příkaz na základě podporovaných cílů.

Rozdíly mezi přenosnými aplikacemi a webovými projekty

Soubor project.json používaný Nástrojem NuGet je podmnožinou, která se nachází v projektech ASP.NET Core. V ASP.NET Core project.json se používají pro metadata projektu, informace o kompilaci a závislosti. Při použití v jiných projektových systémech jsou tyto tři věci rozdělené do samostatných souborů a project.json obsahují méně informací. Mezi velmi vhodné rozdíly patří:

  • V této části může existovat pouze jedna architektura frameworks .

  • Soubor nemůže obsahovat závislosti, možnosti kompilace atd. zobrazené v souborech DNX project.json . Vzhledem k tomu, že může existovat pouze jedna architektura, nemá smysl zadávat závislosti specifické pro architekturu.

  • Kompilace se zpracovává nástrojem MSBuild, takže možnosti kompilace, definice preprocesoru atd. jsou všechny součástí souboru projektu MSBuild, nikoli project.json.

V NuGetu 3 nebo novějším se očekává, že vývojáři nebudou project.jsonručně upravovat , protože uživatelské rozhraní Správce balíčků v sadě Visual Studio manipuluje s obsahem. To znamená, že soubor můžete určitě upravit, ale musíte vytvořit projekt, aby se spustilo obnovení balíčku nebo vyvolá obnovení jiným způsobem. Viz Obnovení balíčku.

project.lock.json

Soubor project.lock.json se generuje v procesu obnovování balíčků NuGet v projektech, které používají project.json. Obsahuje snímek všech informací, které se vygenerují jako NuGet, provede graf balíčků a zahrnuje verzi, obsah a závislosti všech balíčků ve vašem projektu. Systém sestavení tuto možnost používá k výběru balíčků z globálního umístění, které jsou relevantní při sestavování projektu místo v závislosti na místní složce balíčků v samotném projektu. Výsledkem je rychlejší výkon sestavení, protože je nutné číst jenom místo project.lock.json mnoha samostatných .nuspec souborů.

project.lock.json při obnovení balíčku se automaticky vygeneruje, takže ho můžete ze správy zdrojového kódu vynechat tak, že ho přidáte do .gitignore a .tfignore soubory (viz Balíčky a správa zdrojového kódu. Pokud ho ale zahrnete do správy zdrojového kódu, historie změn zobrazuje změny závislostí vyřešených v průběhu času.