Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležitý
Tento obsah je zastaralý. Projekty by měly používat formáty PackageReference. Zjistěte, jak migrovat projekt project.json doPackageReference . Visual Studio 2026 automaticky migruje project.json v době načítání řešení. Sada .NET 10 SDK & NuGet.exe 7.0 nepodporuje projekty project.json.
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ů. Nahrazuje packages.config, ale je zase nahrazena PackageReference NuGet 4.0+.
Soubor project.lock.json (popsaný níže) se používá také v projektech, které využívají project.json.
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" : {}
}
}
Migrace project.json do PackageReference
Migrace mezi project.json a PackageReference je jednoduchá.
Automatická migrace v sadě Visual Studio 2026
Visual Studio 2026 a novější automaticky migruje project.json projekty do PackageReference, když otevřete řešení obsahující project.json projekty. Migrace probíhá v době načtení řešení:
- Otevřete řešení obsahující projekty project.json v sadě Visual Studio 2026 nebo novější.
- Visual Studio automaticky rozpozná project.json soubory a migruje je do formátu PackageReference.
- Pokud chcete zkontrolovat stav migrace, otevřete okno Výstup a vyberte Zobrazit výstup ze Správce balíčků. Měly by se zobrazit zprávy typu Migrace project.json projektu... Za každým projektem následuje "Migrace byla úspěšná". Všechny chyby se zobrazí v seznamu chyb.
- Záloha původního souboru projektu a project.json soubor se vytvoří ve
Backupsložce v kořenovém adresáři projektu. - Migrace převede všechny závislosti balíčků do formátu PackageReference v souboru projektu.
Ruční migrace v sadě Visual Studio 2022
Pro Visual Studio 2022 a starší můžete použít integrovanou migraci:
- Načtěte projekt project.json v sadě Visual Studio.
- Přejděte do Průzkumníka řešení projektu project.json a vyhledejte uzel závislostí.
- Klikněte pravým tlačítkem a vyberte
Migrate project.json to PackageReference...
PackageReference
Alternativní metody migrace
Alternativně můžete použít nástroj příkazového řádku dotnet migrate nebo provést migraci ručně tak, že vezmete veškerý obsah ze souboru project.json a nahradíte ho ekvivalentní syntaxí PackageReference.
Závislosti
Vypíše závislosti balíčků NuGet vašeho projektu v následujícím formátu:
"PackageID" : "version_constraint"
Například:
"dependencies": {
"Microsoft.NETCore": "5.0.0",
"System.Runtime.Serialization.Primitives": "4.0.10"
}
V části dependencies je místo, kde dialogové okno Správce balíčků NuGet přidává 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í verze "5.0.0" znamená >= 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 a exclude vlastností 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 | Obsah |
| modul runtime | Modul runtime, prostředky a FrameworkAssemblies |
| kompilovat | knihovna |
| build | sestavení (props a cíle NÁSTROJE MSBuild) |
| nativní | nativní |
| žádný | Žádné složky |
| všichni | Všechny složky |
Značky zadané exclude mají přednost před značkami zadanými include. Například include="runtime, compile" exclude="compile" je stejná jako include="runtime".
Pokud například chcete zahrnout build a native složky závislosti, použijte následující:
{
"dependencies": {
"packageA": {
"version": "1.0.0",
"include": "build, native"
}
}
}
Chcete-li vyloučit složky content a build závislosti, použijte následující:
{
"dependencies": {
"packageA": {
"version": "1.0.0",
"exclude": "contentFiles, build"
}
}
}
Stavby
Uvádí architektury, na které projekt běží, například net45, netcoreapp, netstandard.
"frameworks": {
"netcore50": {}
}
V oddílu frameworks je povolena pouze jedna položka. (Výjimkou jsou project.json soubory pro projekty ASP.NET, které jsou sestavovány s zastaralým řetězem nástrojů DNX, který umožňuje více cílů.)
Moduly 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": {}
}
Importuje
Importy jsou navržené tak, aby umožňovaly balíčky, které používají dotnet TxM k práci s balíčky, které deklarují dotnet TxM. Pokud váš projekt používá dotnet TxM, všechny balíčky, na kterých jste závislí, musí mít také dotnet TxM, pokud do project.json nepřidáte následující, aby byly platformy, které nejsou dotnet kompatibilní s dotnet:
"frameworks": {
"dotnet": { "imports" : "portable-net45+win81" }
}
Pokud používáte dotnet TxM, systém projektu PCL přidá odpovídající příkaz imports 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 obsahuje méně informací. Mezi velmi vhodné rozdíly patří:
V části
frameworksmůže existovat pouze jedna architektura.Soubor nemůže obsahovat závislosti, možnosti kompilace atd. zobrazené v souborech
project.jsonDNX. 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 a nejsou
project.json.
V NuGetu 3 nebo novějším se očekává, že vývojáři nebudou ručně upravovat project.json, 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 jen project.lock.json místo mnoha samostatných .nuspec souborů.
project.lock.json se při obnovení balíčku automaticky vygeneruje, takže ji můžete ze správy zdrojového kódu vynechat tak, že ji přidáte do .gitignore a .tfignore souborů (viz Balíčky asprávy 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.