Sdílet prostřednictvím


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.