MSBuild .props a .targets v balíčku
Kromě tradičních sestavení mohou balíčky NuGet někdy přidávat vlastní cíle sestavení nebo vlastnosti do projektů, které tento balíček využívají.
Toho lze dosáhnout přidáním platného souboru MSBuild ve formuláři <package_id>.targets
nebo <package_id>.props
(například Contoso.Utility.UsefulStuff.targets
) ve složkách sestavení projektu.
Vytváření složek
Jak se NuGet vyvíjí, byly přidány různé složky pro sestavení .props
a .targets
byly přidány.
Složka | Verze NuGetu | Používání |
---|---|---|
build | 2.5+ | Sestavte logiku pro každou architekturu projektu. |
buildMultiTargeting | 4.0+ | Vytvořte logiku outer build pro projekty, které cílí na více architektur. Pouze PackageReference. |
buildTransitive | 5.0+ | Vytvořte logiku pro prostředky, které protékají tranzitivně do jakéhokoliv náročného projektu. Podívejte se na stránku funkce . Pouze PackageReference. |
Složka sestavení specifická pro architekturu
Všechny 3 složky sestavení se řídí stejným vzorem pro rozhodování o nejvhodnějším souboru na základě cílové architektury projektu.
Soubory v kořenové složce build/<package_id>.targets
sestavení a build/<package_id>.props
jsou považovány za vhodné pro všechny cílové architektury.
Pokud chcete poskytnout soubory specifické pro architekturu, nejprve je umístěte do příslušných podsložek, například následující:
\build
\netstandard1.4
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
\net462
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
Preferujte použití složek sestavení specifických pro architekturu, kdykoli je to vhodné, aby se zabránilo falešně pozitivním instalacím v projektech, které nemusí být podporovány vaším balíčkem.
Mějte na paměti, že pokud balíček neobsahuje žádné soubory ve lib
složkách nebo ref
složkách a pouze soubory v rámci konkrétní složky sestavení architektury, bude tento balíček považován za kompatibilní se všemi projekty. Aktuální verze nástrojů balíčku zobrazí upozornění NU5127 při vytváření těchto balíčků.
Projekty využívající balíčky se soubory sestavení
Projekty PackageReference
.props
a .targets
nejsou přidány do souboru projektu, ale jsou zpřístupněny prostřednictvím {projectName}.nuget.g.targets
a {projectName}.nuget.g.props
. Tyto soubory se při spuštění obnovení automaticky vygenerují.
Pokud projekt cílí na více než jednu architekturu, importy do těchto souborů jsou podmíněny názvem cílové architektury.
MsBuild .props
a .targets
soubory pro cílení na více architektur lze umístit do \buildMultiTargeting
složky.
Při generování importu je nastavena podmínka, že vlastnost $(TargetFramework)
MSBuild je prázdná.
packages.config projects
Když NuGet nainstaluje balíček se \build
soubory, přidá elementy MSBuild <Import>
do souboru projektu odkazující na .targets
soubory a .props
soubory. (.props
je přidán v horní části souboru projektu; .targets
je přidán v dolní části.) Pro každou cílovou architekturu se přidá samostatný podmíněný element MSBuild <Import>
.
Vytvářeníbalíčkůch
K zahrnutí nástroje MSBuild .props
a .targets
do balíčku můžete použít kterýkoli z následujících nástrojů.
Pokyny pro obsah props a cíle nástroje MSBuild
NuGet neomezuje způsob vytváření .props
a .targets
vzhledem k tomu, že se bude lišit v závislosti na potřebě autora balíčku a samotných cílových projektů.
Existuje několik věcí, které nesmí být provedeny v balíčcích a .props
.targets
, například nezadání vlastností a položek, které ovlivňují obnovení, protože ty budou automaticky vyloučeny.
Některé příklady vlastností, které nesmí být přidány nebo aktualizovány: TargetFramework, TargetFrameworkMoniker, TargetPlatformMoniker, AssetTargetFallback atd.
Některé příklady položek, které nesmí být přidány nebo aktualizovány: PackageReference, PackageVersion, PackageDownload atd.