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.json
využí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" : {}
}
}
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í.
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"
}
}
}
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ů.)
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.
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.app
atd.
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 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ů.
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.json
ruč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.
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.