Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Naast de meer traditionele assembly's kunnen NuGet-pakketten soms aangepaste builddoelen of eigenschappen toevoegen aan projecten die dat pakket gebruiken.
Dit kan worden bereikt door een geldig MSBuild-bestand toe te voegen, in de vorm <package_id>.targets of <package_id>.props (zoals Contoso.Utility.UsefulStuff.targets) binnen de buildmappen van het project.
Mappen bouwen
Naarmate NuGet zich heeft ontwikkeld, zijn er verschillende verschillende mappen voor build .props en .targets toegevoegd.
| Map | NuGet-versie | Gebruik |
|---|---|---|
| build | 2.5+ | Bouw logica voor elk framework van een project. |
| buildMultiTargeting | 4.0+ | Bouw logica voor outer build voor projecten die gericht zijn op meerdere frameworks. PackageReference alleen. |
| buildTransitive | 5.0+ | Bouw logica voor assets die transitief stromen naar elk verbruikend project. Zie de pagina met functies. PackageReference alleen. |
Frameworkspecifieke boumap
Alle drie de buildmap volgen hetzelfde patroon voor het bepalen van het meest geschikte bestand op basis van het projectdoelframework.
Bestanden in de hoofdmap van de build build/<package_id>.targets en build/<package_id>.props worden beschouwd als geschikt voor alle doelframeworks.
Als u frameworkspecifieke bestanden wilt bieden, plaatst u ze eerst in de juiste submappen, zoals de volgende:
\build
\netstandard1.4
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
\net462
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
Gebruik bij voorkeur framework-specifieke buildmappen waar mogelijk om vals-positieve installaties in projecten te voorkomen die mogelijk niet door uw pakket worden ondersteund.
Houd er rekening mee dat als een pakket geen bestanden in de lib of ref mappen heeft en alleen bestanden onder een frameworkspecifieke buildmap, dat pakket wordt beschouwd als compatibel met alle projecten. De nieuwste versies van de pack tooling genereren de NU5127-waarschuwing wanneer dergelijke pakketten worden gemaakt.
Projecten die pakketten gebruiken met buildbestanden
PackageReference-projecten
.props en .targets worden niet toegevoegd aan het projectbestand, maar worden in plaats daarvan beschikbaar gesteld via {projectName}.nuget.g.targets en {projectName}.nuget.g.props. Deze bestanden worden automatisch gegenereerd wanneer herstel wordt uitgevoerd.
Wanneer een project zich richt op meer dan één framework, worden de importbewerkingen naar deze bestanden geconditioneerd op basis van de naam van het doelframework.
MSBuild .props en .targets bestanden voor targeting met meerdere frameworks kunnen in de \buildMultiTargeting map worden geplaatst.
Wanneer de importbewerkingen worden gegenereerd, wordt een voorwaarde ingesteld dat de MSBuild-eigenschap $(TargetFramework) leeg is.
de projecten voor packages.config
Wanneer NuGet een pakket met \build bestanden installeert, worden MSBuild-elementen <Import> toegevoegd in het projectbestand dat verwijst naar de .targets en .props bestanden. (.props wordt boven aan het projectbestand toegevoegd; .targets wordt onderaan toegevoegd.) Er wordt een afzonderlijk voorwaardelijk MSBuild-element <Import> toegevoegd voor elk doelframework.
Pakketten ontwerpen met MSBuild props en doelen
U kunt een van de volgende hulpprogramma's gebruiken om MSBuild .props en .targets in uw pakket op te nemen.
Richtlijnen voor de inhoud van MSBuild props en doelen
NuGet beperkt niet hoe u .props en .targets samenstelt, omdat deze variëren op basis van de behoeften van de pakketontwikkelaar en de doelprojecten zelf.
Er zijn enkele dingen die niet in pakketten .props moeten worden uitgevoerd en .targets, zoals het niet opgeven van eigenschappen en items die van invloed zijn op herstellen, omdat deze automatisch worden uitgesloten.
Enkele voorbeelden van eigenschappen die niet mogen worden toegevoegd of bijgewerkt: TargetFramework, TargetFrameworkMoniker, TargetPlatformMoniker, AssetTargetFallback, enzovoort.
Enkele voorbeelden van items die niet mogen worden toegevoegd of bijgewerkt: PackageReference, PackageVersion, PackageDownload, enzovoort.