Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
NuGet 4.0+
Med PackageReference-formatetNuGet kan 4.0+ lagra alla manifestmetadata direkt i en projektfil i stället för att använda en separat .nuspec fil.
Med MSBuild 15,1+ är NuGet också en förstaklassig komponent med pack och restore mål enligt beskrivningen nedan. Med de här målen kan du arbeta med NuGet på samma sätt som med andra MSBuild aktiviteter eller mål. Anvisningar för hur du skapar ett NuGet paket med hjälp av MSBuildfinns i Skapa ett NuGet paket med .MSBuild (För NuGet 3.x och tidigare använder du paket - och återställningskommandona via CLI i NuGet stället.)
Prioriterad byggordning
Eftersom pack och restore är MSBuild mål kan du komma åt dem för att förbättra arbetsflödet. Tänk dig att du vill kopiera paketet till en nätverksdelning efter att du har packat det. Du kan göra det genom att lägga till följande i projektfilen:
<Target Name="CopyPackage" AfterTargets="Pack">
  <Copy
    SourceFiles="$(OutputPath)..\$(PackageId).$(PackageVersion).nupkg"
    DestinationFolder="\\myshare\packageshare\"
    />
</Target>
På samma sätt kan du skriva en MSBuild uppgift, skriva ett eget mål och använda NuGet egenskaper i MSBuild aktiviteten.
Anmärkning
              $(OutputPath) är relativ och förväntar sig att du kör kommandot från projektroten.
paketmål
För .NET-projekt som använder PackageReference-formatet hämtar msbuild -t:pack indata från projektfilen för att använda denna i skapandet av ett NuGet-paket.
Icke-SDK-liknande projekt måste installera NuGet. Build.Tasks.Pack-paket när du använder Visual Studio 2022 eller tidigare. Vi rekommenderar att du avinstallerar det här paketet när du uppgraderar till Visual Studio 2026 för att säkerställa att projektet kan använda de senaste paketfunktionerna och felkorrigeringarna.
I följande tabell beskrivs de MSBuild egenskaper som kan läggas till i en projektfil inom den första <PropertyGroup> noden. Du kan enkelt göra dessa ändringar i Visual Studio 2017 och senare genom att högerklicka på projektet och välja Redigera {project_name} på snabbmenyn. För enkelhetens skull ordnas tabellen efter motsvarande egenskap i en .nuspec fil.
Anmärkning
              Owners och Summary egenskaper från .nuspec stöds inte med MSBuild.
| Attribut/nuspec värde | MSBuild Egenskap | Förinställning | Noteringar | 
|---|---|---|---|
| Id | PackageId | $(AssemblyName) | $(AssemblyName)från MSBuild | 
| Version | PackageVersion | Utgåva | Detta är semverkompatibelt, till exempel 1.0.0,1.0.0-betaeller1.0.0-beta-00345. Standardvärdet ärVersionom det inte har angetts. | 
| VersionPrefix | VersionPrefix | tom | När man anger PackageVersionersätterVersionPrefix | 
| VersionSuffix | VersionSuffix | tom | Genom att ange PackageVersionskrivsVersionSuffixöver | 
| Authors | Authors | Användarnamn för den aktuella användaren | En semikolonavgränsad lista över paketens författare som matchar profilnamn på nuget.org. Dessa visas i galleriet på NuGet nuget.org och används för att korsreferera paket av samma författare. | 
| Owners | N/A | Finns inte i nuspec | |
| Title | Title | $(PackageId) | En mänskligt vänlig titel på paketet, som vanligtvis används i användargränssnittet och visas på nuget.org samt i Paket hanteraren i Visual Studio. | 
| Description | Description | "Paketbeskrivning" | En lång beskrivning av monteringen. Om PackageDescriptioninte anges används även den här egenskapen som beskrivning av paketet. | 
| Copyright | Copyright | tom | Upphovsrättsinformation för paketet. | 
| RequireLicenseAcceptance | PackageRequireLicenseAcceptance | false | Ett booleskt värde som anger om klienten måste uppmana konsumenten att godkänna paketlicensen innan paketet installeras. | 
| license | PackageLicenseExpression | tom | Motsvarar <license type="expression">. Se Paketering av ett licensuttryck eller en licensfil. | 
| license | PackageLicenseFile | tom | Sökväg till en licensfil i paketet om du använder en anpassad licens eller en licens som inte har tilldelats någon SPDX-identifierare. Du måste uttryckligen packa den angivna licensfilen. Motsvarar <license type="file">. Se Paketering av ett licensuttryck eller en licensfil. | 
| LicenseUrl | PackageLicenseUrl | tom | PackageLicenseUrlär inaktuell. AnvändPackageLicenseExpressionellerPackageLicenseFilei stället. | 
| ProjectUrl | PackageProjectUrl | tom | |
| Icon | PackageIcon | tom | En sökväg till en bild i paketet som ska användas som paketikon. Du måste tydligt packa den refererade ikonbildfilen. Mer information finns i Paketering av en ikonbildfil och iconmetadata. | 
| IconUrl | PackageIconUrl | tom | PackageIconUrlär inaktuell till förmån förPackageIcon. För bästa prestandanivå bör du dock angePackageIconUrlutöverPackageIcon. | 
| Readme | PackageReadmeFile | tom | Du måste uttryckligen packa den refererade readme-filen. | 
| Tags | PackageTags | tom | En semikolonavgränsad lista med taggar som anger paketet. | 
| ReleaseNotes | PackageReleaseNotes | tom | Versionsanteckningar för paketet. | 
| Repository/Url | RepositoryUrl | tom | Lagringsplats-URL som används för att klona eller hämta källkod. Exempel: https://github.com/NuGethttps://github.com/NuGet/NuGet.Client.git. | 
| Repository/Type | RepositoryType | tom | Lagringsplatstyp. Exempel: git(standard),tfs. | 
| Repository/Branch | RepositoryBranch | tom | Valfria uppgifter om repositoryns gren. RepositoryUrlmåste också anges för att den här egenskapen ska inkluderas. Exempel: master (NuGet 4.7.0+). | 
| Repository/Commit | RepositoryCommit | tom | Valfri lagringsplatsincheckning eller ändringsuppsättning för att ange vilken källa paketet skapades mot. RepositoryUrlmåste också anges för att den här egenskapen ska inkluderas. Exempel: 0e4d1b598f350b3dc675018d539114d1328189ef (NuGet 4.7.0+). | 
| PackageType | <PackageType>CustomType1, 1.0.0.0;CustomType2</PackageType> | Anger paketets avsedda användning. Pakettyper använder samma format som paket-ID:t och avgränsas av ;. Pakettyper kan versionshanteras genom att lägga till en,- och enVersion-sträng. Se Anvisningar för att ange en NuGet pakettyp (NuGet 3.5.0+). | |
| Summary | Stöds inte | 
måldata för paket
| Fastighet | Description | 
|---|---|
| IsPackable | Ett booleskt värde som anger om projektet kan packas. Standardvärdet är true. | 
| SuppressDependenciesWhenPacking | Ange till trueför att förhindra paketberoenden från det genererade NuGet paketet. | 
| PackageVersion | Anger vilken version det resulterande paketet ska ha. Accepterar alla former av NuGet versionssträngar. Standardvärdet är värdet $(Version)för egenskapenVersioni projektet. | 
| PackageId | Anger namnet på det resulterande paketet. Om packinte anges kommer operationen som förval att använda namnet påAssemblyNameeller katalognamnet som namnet på paketet. | 
| PackageDescription | En lång beskrivning av paketet för UI-visning. | 
| Authors | En semikolonavgränsad lista över paketens författare som matchar profilnamn på nuget.org. Dessa visas i galleriet på NuGet nuget.org och används för att korsreferera paket av samma författare. | 
| Description | En lång beskrivning av monteringen. Om PackageDescriptioninte anges används även den här egenskapen som beskrivning av paketet. | 
| Copyright | Upphovsrättsinformation för paketet. | 
| PackageRequireLicenseAcceptance | Ett booleskt värde som anger om klienten måste uppmana konsumenten att godkänna paketlicensen innan paketet installeras. Standardvärdet är false. | 
| DevelopmentDependency | Ett booleskt värde som anger om paketet är markerat som ett utvecklingsberoende, vilket förhindrar att paketet inkluderas som ett beroende i andra paket. Med PackageReference(NuGet 4.8+) innebär denna flagga också att kompileringstillgångar utesluts från kompileringen. Mer information finns i Support för DevelopmentDependency för PackageReference. | 
| PackageLicenseExpression | En SPDX-licensidentifierare eller ett uttryck, till exempel Apache-2.0. Mer information finns i Paketering av ett licensuttryck eller en licensfil. | 
| PackageLicenseFile | Sökväg till en licensfil i paketet om du använder en anpassad licens eller en licens som inte har tilldelats någon SPDX-identifierare. | 
| PackageLicenseUrl | PackageLicenseUrlär inaktuell. AnvändPackageLicenseExpressionellerPackageLicenseFilei stället. | 
| PackageProjectUrl | |
| PackageIcon | Anger paketikonsökvägen i förhållande till paketets rot. Mer information finns i Packa en ikonbildfil. | 
| PackageReleaseNotes | Versionsanteckningar för paketet. | 
| PackageReadmeFile | Användardokumentation för paketet. | 
| PackageTags | En semikolonavgränsad lista med taggar som anger paketet. | 
| PackageOutputPath | Bestämmer den utdatasökväg där det packade paketet kommer att placeras. Standard är $(OutputPath). | 
| IncludeSymbols | Det här booleska värdet anger om paketet ska skapa ytterligare ett symbolpaket när projektet är packat. Symbolpaketets format styrs av egenskapen SymbolPackageFormat. Mer information finns i IncludeSymbols. | 
| IncludeSource | Det här booleska värdet anger om paketprocessen ska skapa ett källpaket. Källpaketet innehåller bibliotekets källkod samt PDB-filer. Källfiler placeras under src/ProjectNamekatalogen i den resulterande paketfilen. Mer information finns i IncludeSource. | 
| PackageType | |
| IsTool | Anger om alla utdatafiler kopieras till verktygsmappen i stället för lib-mappen . Mer information finns i IsTool. | 
| RepositoryUrl | Lagringsplats-URL som används för att klona eller hämta källkod. Exempel: https://github.com/NuGethttps://github.com/NuGet/NuGet.Client.git. | 
| RepositoryType | Lagringsplatstyp. Exempel: git(standard),tfs. | 
| RepositoryBranch | Valfri information om lagringsplatsens gren. RepositoryUrlmåste också anges för att den här egenskapen ska inkluderas. Exempel: master (NuGet 4.7.0+). | 
| RepositoryCommit | Valfri lagringsplatsincheckning eller ändringsuppsättning för att ange vilken källa paketet skapades mot. RepositoryUrlmåste också anges för att den här egenskapen ska inkluderas. Exempel: 0e4d1b598f350b3dc675018d539114d1328189ef (NuGet 4.7.0+). | 
| SymbolPackageFormat | Formatet för symbolpaketet anges. Om "symbols.nupkg" skapas ett äldre symbolpaket med tillägget .symbols.nupkg som innehåller PDF-filer, DLL:er och andra utdatafiler. Om "snupkg" skapas ett snupkg-symbolpaket som innehåller de bärbara PDF-filerna. Standardvärdet är "symbols.nupkg". | 
| NoPackageAnalysis | Anger som packinte ska köra paketanalys efter att paketet har skapats. | 
| MinClientVersion | Anger den lägsta versionen av NuGet klienten som kan installera det här paketet, framtvingat av nuget.exe och Visual Studio Package Manager. | 
| IncludeBuildOutput | Det här booleska värdet anger om kompileringsutdatasammansättningarna ska packas i .nupkg-filen eller inte. | 
| IncludeContentInPack | Det här booleska värdet anger om några objekt som har en typ av Contentinkluderas i det resulterande paketet automatiskt. Standardvärdet ärtrue. | 
| BuildOutputTargetFolder | Anger den mapp där utdatasammansättningarna ska placeras. Utdatasammansättningarna (och andra utdatafiler) kopieras till respektive ramverksmappar. Mer information finns i Utdatasammansättningar. | 
| ContentTargetFolders | Anger standardplatsen för var alla innehållsfiler ska placeras om de inte har angetts. Standardvärdet är "content; contentFiles". Mer information finns i Inkludera innehåll i ett paket. | 
| NuspecFile | Relativ eller absolut sökväg till filen .nuspec som används för packning. Om den anges används den uteslutande för paketeringsinformation och all information i projekten används inte. För mer information, se Paketering med hjälp av en .nuspec. | 
| NuspecBasePath | Grundläggande sökväg för .nuspec filen. För mer information, se Paketering med hjälp av en .nuspec. | 
| NuspecProperties | Semikolonavgränsad lista över key=value-par. För mer information, se Paketering med hjälp av en .nuspec. | 
paketscenarier
Förhindra beroenden
Om du vill förhindra paketberoenden från det genererade NuGet paketet, ställ in SuppressDependenciesWhenPacking till true vilket gör att du kan hoppa över alla beroenden från den genererade nupkg-filen.
PackageIconUrl
              PackageIconUrl ersätts av egenskapen PackageIcon. Från och med NuGet 5.3 och Visual Studio 2019 version 16.3 pack genererar NU5048-varningen om paketmetadata endast anger PackageIconUrl.
PackageIcon
Tips/Råd
Om du vill upprätthålla bakåtkompatibilitet med klienter och källor som ännu inte har stöd PackageIconför anger du både PackageIcon och PackageIconUrl. Visual Studio stöder PackageIcon paket som kommer från en mappbaserad källa.
Packa en ikonbildfil
När du packar en ikonbildfil använder du PackageIcon egenskapen för att ange ikonfilens sökväg i förhållande till paketets rot. Kontrollera dessutom att filen ingår i paketet. Bildfilens storlek är begränsad till 1 MB. Filformat som stöds är JPEG och PNG. Vi rekommenderar en bildupplösning på 128x128.
Till exempel:
<PropertyGroup>
    ...
    <PackageIcon>icon.png</PackageIcon>
    ...
</PropertyGroup>
<ItemGroup>
    ...
    <None Include="images\icon.png" Pack="true" PackagePath="\"/>
    ...
</ItemGroup>
För motsvarigheten nuspec, ta en titt på nuspec referensen för ikonen.
PackageReadmeFile
Stöds med NuGet förhandsversionen av 5.10.0 2.NET / SDK 5.0.300 och senare
När du packar en readme-fil måste du använda PackageReadmeFile egenskapen för att ange paketsökvägen i förhållande till paketets rot. Dessutom måste du se till att filen ingår i paketet. Filformat som stöds omfattar endast Markdown (.md).
Till exempel:
<PropertyGroup>
    ...
    <PackageReadmeFile>readme.md</PackageReadmeFile>
    ...
</PropertyGroup>
<ItemGroup>
    ...
    <None Include="docs\readme.md" Pack="true" PackagePath="\"/>
    ...
</ItemGroup>
För motsvarande nuspec tar du en titt på nuspec-referensen för README.
Utdatasammansättningar
              nuget pack kopierar utdatafiler med tilläggen .exe, .dll, .xml, .winmd, .jsonoch .pri. Vilka utdatafiler som kopieras beror på vad MSBuild tillhandahåller från BuiltOutputProjectGroup mål.
Det finns två MSBuild egenskaper som du kan använda i projektfilen eller kommandoraden för att styra vart utdatasammansättningar ska gå:
- 
              IncludeBuildOutput: Ett booleskt värde som avgör om kompilerade utdatasammansättningar ska ingå i paketet.
- 
              BuildOutputTargetFolder: Anger den mapp där utdatasammansättningarna ska placeras. Utdatasammansättningarna (och andra utdatafiler) kopieras till respektive ramverksmappar.
Paketreferenser
Se Paketreferenser i Project Files.
Projekt till projektreferenser
Projekt-till-projektreferenser betraktas som standard som NuGet paketreferenser. Till exempel:
<ProjectReference Include="..\UwpLibrary2\UwpLibrary2.csproj"/>
Du kan också lägga till följande metadata i projektreferensen:
<IncludeAssets>
<ExcludeAssets>
<PrivateAssets>
Inkludera innehåll i ett paket
Om du vill inkludera innehåll lägger du till extra metadata i det befintliga <Content> objektet. Som standard ingår allt av typen "Innehåll" i paketet om du inte åsidosätter med poster som följande:
<Content Include="..\win7-x64\libuv.txt">
 <Pack>false</Pack>
</Content>
Som standardinställning läggs allt till i roten av content och contentFiles\any\<target_framework> mappen inom ett paket och bevarar den relativa mappstrukturen, såvida du inte anger en paketsökväg:
<Content Include="..\win7-x64\libuv.txt">
  <Pack>true</Pack>
  <PackagePath>content\myfiles\</PackagePath>
</Content>
Om du bara vill kopiera allt innehåll till en viss rotmapp (i stället för content och contentFiles båda) kan du använda MSBuild egenskapen ContentTargetFolders, som standard är "innehåll; contentFiles" men kan anges till andra mappnamn. Observera att om du bara anger "contentFiles" i ContentTargetFolders placeras filer under contentFiles\any\<target_framework> eller contentFiles\<language>\<target_framework> baserat på buildAction.
              PackagePath kan vara en semikolonavgränsad uppsättning målsökvägar. Om en tom paketsökväg anges, skulle filen läggas till i paketets rot. Följande lägger libuv.txt till content\myfiles, content\samples och rooten för paketet:
<Content Include="..\win7-x64\libuv.txt">
  <Pack>true</Pack>
  <PackagePath>content\myfiles;content\sample;;</PackagePath>
</Content>
Det finns också en MSBuild egenskap $(IncludeContentInPack) som standard är true. Om detta är inställt false på för ett projekt inkluderas inte innehållet från det projektet i nuget-paketet.
Andra paketspecifika metadata som du kan ange för något av ovanstående objekt innehåller <PackageCopyToOutput> och <PackageFlatten> som anger CopyToOutput och Flatten värden för contentFiles posten i utdata nuspec.
Anmärkning
Förutom innehållselement kan <Pack> och <PackagePath>-metadata även ställas in på filer med byggåtgärden Compile, EmbeddedResource, ApplicationDefinition, Page, Resource, SplashScreen, DesignData, DesignDataWithDesignTimeCreateableTypes, CodeAnalysisDictionary, AndroidAsset, AndroidResource, BundleResource eller None.
För att paket ska kunna lägga till filnamnet i paketsökvägen när du använder globbningsmönster måste paketsökvägen sluta med mappavgränsartecknet, annars behandlas paketsökvägen som den fullständiga sökvägen inklusive filnamnet.
InkluderaSymboler
När du använder MSBuild -t:pack -p:IncludeSymbols=truekopieras motsvarande .pdb filer tillsammans med andra utdatafiler (.dll, , .exe.winmd, .xml, .json, .pri). Observera att inställningen IncludeSymbols=true skapar ett vanligt paket och ett symbolpaket.
IncludeSource
Detta är samma som IncludeSymbols, förutom att det kopierar källfiler tillsammans med .pdb filer också. Alla filer av typen Compile kopieras över till src\<ProjectName>\, med bevarande av den relativa mappstrukturen i det resulterande paketet. Detsamma gäller för källfiler för alla ProjectReference som har TreatAsPackageReference inställd på false.
Om en fil av typen Kompilera ligger utanför projektmappen läggs den bara till src\<ProjectName>\i .
Packa ett licensuttryck eller en licensfil
Använd egenskapen PackageLicenseExpression när du använder ett licensuttryck. Ett exempel finns i Exempel på licensuttryck.
<PropertyGroup>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
</PropertyGroup>
Mer information om licensuttryck och licenser som godkänns av NuGet.org finns i licensmetadata.
När du packar en licensfil använder du PackageLicenseFile egenskapen för att ange paketsökvägen i förhållande till paketets rot. Kontrollera dessutom att filen ingår i paketet. Till exempel:
<PropertyGroup>
    <PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
</PropertyGroup>
<ItemGroup>
    <None Include="licenses\LICENSE.txt" Pack="true" PackagePath=""/>
</ItemGroup>
Ett exempel finns i Exempel på licensfil.
Anmärkning
Endast en av PackageLicenseExpression, PackageLicenseFileoch PackageLicenseUrl kan anges i taget.
Paketering av en fil utan tillägg
I vissa scenarier, till exempel när du packar en licensfil, kanske du vill inkludera en fil utan ett tillägg. Av historiska skäl NuGet behandlar & MSBuild sökvägar utan ett tillägg som kataloger.
  <PropertyGroup>
    <TargetFrameworks>netstandard2.0</TargetFrameworks>
    <PackageLicenseFile>LICENSE</PackageLicenseFile>
  </PropertyGroup>
  <ItemGroup>
    <None Include="LICENSE" Pack="true" PackagePath=""/>
  </ItemGroup>  
IsTool
När du använder MSBuild -t:pack -p:IsTool=truekopieras alla utdatafiler som anges i scenariot Utdatasammansättningar till tools mappen i stället för mappen lib . Observera att detta skiljer sig från ett DotNetCliTool som anges genom att ange PackageType i .csproj -filen.
Paketering med hjälp av en .nuspec fil
Även om vi rekommenderar att du inkluderar alla egenskaper som vanligtvis finns i .nuspec filen i projektfilen i stället, kan du välja att använda en .nuspec fil för att packa projektet.
Du måste fortfarande återställa projektet innan du kan packa en nuspec fil. (Ett SDK-projekt innehåller paketmålen som standard.)
Målramverket för projektfilen är irrelevant och används inte när du packar en nuspec. Följande tre MSBuild egenskaper är relevanta för packning med hjälp av en .nuspec:
- 
              NuspecFile: relativ eller absolut sökväg till filen.nuspecsom används för packning.
- 
              NuspecProperties: en semikolonavgränsad lista över key=value-par. På grund av hur MSBuild kommandoradsparsing fungerar måste flera egenskaper anges på följande sätt:-p:NuspecProperties="key1=value1;key2=value2".
- 
              NuspecBasePath: Bassökväg för.nuspecfilen.
Om du använder dotnet.exe för att packa projektet använder du ett kommando som liknar följande:
dotnet pack <path to .csproj file> -p:NuspecFile=<path to nuspec file> -p:NuspecProperties=<> -p:NuspecBasePath=<Base path> 
Om du använder MSBuild för att packa projektet använder du ett kommando som liknar följande:
msbuild -t:pack <path to .csproj file> -p:NuspecFile=<path to nuspec file> -p:NuspecProperties=<> -p:NuspecBasePath=<Base path> 
Observera att om du packar en nuspec med hjälp av dotnet.exe eller msbuild leder det också till att projektet byggs som standard. Detta kan undvikas genom att skicka --no-build egenskapen till dotnet.exe, vilket motsvarar inställningen <NoBuild>true</NoBuild>  i projektfilen, tillsammans med inställningen <IncludeBuildOutput>false</IncludeBuildOutput>  i projektfilen.
Ett exempel på en .csproj-fil för att packa en nuspec fil är:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <NoBuild>true</NoBuild>
    <IncludeBuildOutput>false</IncludeBuildOutput>
    <NuspecFile>PATH_TO_NUSPEC_FILE</NuspecFile>
    <NuspecProperties>add nuspec properties here</NuspecProperties>
    <NuspecBasePath>optional to provide</NuspecBasePath>
  </PropertyGroup>
</Project>
Avancerade tilläggspunkter för att skapa ett anpassat paket
Målet pack innehåller två tilläggspunkter som körs i den inre målramverkets specifika version. Tilläggspunkterna stöder att innefatta innehåll och assemblys specifikt för målramverket i ett paket.
- 
              TargetsForTfmSpecificBuildOutputtarget: Använd för filer ilibmappen eller en mapp som har angetts med hjälp avBuildOutputTargetFolder.
- 
              TargetsForTfmSpecificContentInPackagetarget: Används för filer utanförBuildOutputTargetFolder.
TargetsForTfmSpecificBuildOutput
Skriv ett anpassat mål och ange det som värdet för $(TargetsForTfmSpecificBuildOutput) egenskapen. För filer som behöver gå in i BuildOutputTargetFolder (lib som standard) ska målet skriva filerna till ItemGroup BuildOutputInPackage och ange följande två metadatavärden:
- 
              FinalOutputPath: Filens absoluta sökväg; Om den inte anges används identiteten för att utvärdera källsökvägen.
- 
              TargetPath: (Valfritt) Ange när filen behöver gå in i en undermapp ilib\<TargetFramework>, till exempel satellitsammansättningar som går under respektive kulturmapp. Defaultvärdet är filens namn.
Exempel:
<PropertyGroup>
  <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);GetMyPackageFiles</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<Target Name="GetMyPackageFiles">
  <ItemGroup>
    <BuildOutputInPackage Include="$(OutputPath)cs\$(AssemblyName).resources.dll">
        <TargetPath>cs</TargetPath>
    </BuildOutputInPackage>
  </ItemGroup>
</Target>
TargetsForTfmSpecificContentInPackage
Skriv ett anpassat mål och ange det som värdet för $(TargetsForTfmSpecificContentInPackage) egenskapen. För alla filer som ska inkluderas i paketet bör målet skriva dessa filer till ItemGroup TfmSpecificPackageFile och ange följande valfria metadata:
- 
              PackagePath: Sökväg där filen ska matas ut i paketet. NuGet utfärdar en varning om fler än en fil läggs till i samma paketsökväg.
- 
              BuildAction: Byggåtgärden som ska tilldelas till filen krävs endast om paketsökvägen finns icontentFilesmappen. Standardvärdet är "Ingen".
Ett exempel:
<PropertyGroup>
  <TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);CustomContentTarget</TargetsForTfmSpecificContentInPackage>
</PropertyGroup>
<Target Name="CustomContentTarget">
  <ItemGroup>
    <TfmSpecificPackageFile Include="abc.txt">
      <PackagePath>mycontent/$(TargetFramework)</PackagePath>
    </TfmSpecificPackageFile>
    <TfmSpecificPackageFile Include="Extensions/ext.txt" Condition="'$(TargetFramework)' == 'net46'">
      <PackagePath>net46content</PackagePath>
    </TfmSpecificPackageFile>  
  </ItemGroup>
</Target>  
återställ måltillstånd
              MSBuild -t:restore (som nuget restore och dotnet restore använder med .NET Core-projekt), återställer paket som refereras i projektfilen enligt följande:
- Läs alla projekt-till-projekt-referenser
- Läs projektegenskaperna för att hitta den mellanliggande mappen och målramverken
- Skicka MSBuild data till NuGet.Build.Tasks.dll
- Utför återställning
- Ladda ned paket
- Skriv assets-fil, target-filer och props-filer
Målet restore fungerar för projekt med formatet PackageReference.
              MSBuild 16.5+ har även opt-in-support för packages.config formatet.
Anmärkning
Målet restoreska inte köras i kombination med build målet.
Återställa egenskaper
Ytterligare återställningsinställningar kan komma från MSBuild egenskaper i projektfilen. Värden kan också anges från kommandoraden med växeln -p: (se Exempel nedan).
| Fastighet | Description | 
|---|---|
| RestoreSources | Semikolonavgränsad lista över paketkällor. | 
| RestorePackagesPath | Mappsökväg för användarpaket. | 
| RestoreDisableParallel | Begränsa nedladdningar till en i taget. | 
| RestoreConfigFile | Sökväg till Nuget.Config-fil som ska användas. | 
| RestoreNoHttpCache | Om sant, undviker att använda HTTP-cachelagrade paket. Se Hantera globala paket och cachemappar. | 
| RestoreIgnoreFailedSources | Om det är sant ignorerar du misslyckade eller saknade paketkällor. | 
| RestoreFallbackFolders | Reservmappar som används på samma sätt som mappen för användarpaket används. | 
| RestoreAdditionalProjectSources | Ytterligare källor som ska användas under återställningen. | 
| RestoreAdditionalProjectFallbackFolders | Ytterligare reservmappar som ska användas under återställningen. | 
| RestoreAdditionalProjectFallbackFoldersExcludes | Exkluderar reservmappar som anges i RestoreAdditionalProjectFallbackFolders | 
| RestoreTaskAssemblyFile | Sökväg till NuGet.Build.Tasks.dll. | 
| RestoreGraphProjectInput | Semikolonavgränsad lista över projekt som ska återupprättas, vilken bör innehålla fullständiga sökvägar. | 
| RestoreUseSkipNonexistentTargets | När projekten samlas in via MSBuild den avgör om de samlas in med hjälp av optimeringen SkipNonexistentTargets. När den inte har angetts är standardvärdettrue. Konsekvensen är ett felsnabbt beteende när ett projekts mål inte kan importeras. | 
| MSBuildProjectExtensionsPath | Utdatamapp, standardmässigt till BaseIntermediateOutputPath-mappen ochobj-mappen. | 
| RestoreForce | I projekt som baseras på PackageReference tvingar detta alla beroenden att lösas, även om den senaste återställningen var lyckad. Att ange den här flaggan liknar att ta bort project.assets.json-filen. Detta kringgår inte http-cachen. | 
| RestorePackagesWithLockFile | Väljer att använda en låsfil. | 
| RestoreLockedMode | Kör återställning i låst läge. Det innebär att återställningen inte omvärderar beroendena. | 
| NuGetLockFilePath | En anpassad plats för låsfilen. Standardplatsen ligger bredvid projektet och heter packages.lock.json. | 
| RestoreForceEvaluate | Tvingar återställningen att omkomputera beroendena och uppdatera låsfilen utan förvarning. | 
| RestorePackagesConfig | En opt-in-omkopplare som återställer projekt med packages.config. Endast stöd med MSBuild -t:restore. | 
| RestoreRepositoryPath | endast packages.config. Anger den paketkatalog som paketen ska återställas till. SolutionDirectoryanvänds om det inte anges. | 
| RestoreUseStaticGraphEvaluation | En opt-in-växel för att använda utvärdering av statiska diagram MSBuild i stället för standardutvärderingen. Utvärdering av statiska diagram är en experimentell funktion som är betydligt snabbare för stora lagringsplatser och lösningar. | 
| RestoreUseLegacyDependencyResolver | Ett undantag för att använda den äldre beroendelösaren. NuGetImplementeringen av beroendelösaren skrevs om i 6.12-versionen. Den här växeln tvingar den tidigare algoritmen att användas. | 
Egenskapen ExcludeRestorePackageImports är en intern egenskap som används av NuGet.
Den bör inte ändras eller anges i några MSBuild filer.
Examples
Kommandorad:
msbuild -t:restore -p:RestoreConfigFile=<path>
Projektfil:
<PropertyGroup>
    <RestoreIgnoreFailedSources>true</RestoreIgnoreFailedSources>
</PropertyGroup>
Återställa utdata
Återställning skapar följande filer i byggmappen obj :
| File | Description | 
|---|---|
| project.assets.json | Innehåller beroendediagrammet för alla paketreferenser. | 
| {projectName}.projectFileExtension.nuget.g.props | Referenser till MSBuild rekvisita som finns i paket | 
| {projectName}.projectFileExtension.nuget.g.targets | Referenser till MSBuild mål som finns i paket | 
Återställ och bygg med ett MSBuild kommando
På grund av det faktum att NuGet kan återställa paket som tar ner MSBuild mål och rekvisita, körs återställnings- och byggutvärderingarna med olika globala egenskaper. Det innebär att följande kommer att ha ett oförutsägbart och ofta felaktigt beteende.
msbuild -t:restore,build
Den rekommenderade metoden är i stället:
msbuild -t:build -restore
Samma logik gäller för andra mål som liknar build.
Återställa PackageReference- och packages.config-projekt med MSBuild
Med MSBuild 16,5+ stöds packages.config också för msbuild -t:restore.
msbuild -t:restore -p:RestorePackagesConfig=true
Anmärkning
              packages.config återställning är endast tillgängligt med MSBuild 16.5+, och inte med dotnet.exe
Återställning med MSBuild statisk granskning av grafer
Anmärkning
Med MSBuild 16.6+ NuGet har lagt till en experimentell funktion för att använda statisk grafutvärdering från kommandoraden som avsevärt förbättrar återställningstiden för stora lagringsplatser.
msbuild -t:restore -p:RestoreUseStaticGraphEvaluation=true
Du kan också aktivera den genom att ange egenskapen i en Directory.Build.Props.
<Project>
  <PropertyGroup>
    <RestoreUseStaticGraphEvaluation>true</RestoreUseStaticGraphEvaluation>
  </PropertyGroup>
</Project>
Anmärkning
Från och med Visual Studio 2019.x och NuGet 5.x anses den här funktionen vara experimentell och valfri att aktivera. Följ NuGet/Home#9803 för mer information om när den här funktionen ska aktiveras som standard.
Återställning av en statisk graf förändrar den del av msbuild som tillhör återställningen, projektläsningen och utvärderingen, men inte återställningsalgoritmen! Återställningsalgoritmen är densamma för alla NuGet verktyg (NuGet.exe, MSBuild.exe, dotnet.exe och Visual Studio).
I mycket få scenarier kan återställning av statiska diagram fungera annorlunda än den aktuella återställningen och vissa deklarerade PackageReferences eller ProjectReferences kanske saknas.
För att underlätta för dig kan du som en engångskontroll, när du migrerar till återställning av statiska diagram, överväga att köra:
msbuild.exe -t:restore -p:RestoreUseStaticGraphEvaluation=true
msbuild.exe -t:restore
NuGet bör inte rapportera några ändringar. Om du ser en avvikelse anger du ett problem på NuGet/Home.
Ersätta ett bibliotek från ett återställningsdiagram
Om en återställning ger fel sammansättning är det möjligt att undanta standardalternativet för paket och ersätta det med ditt eget val. Först med en toppnivå PackageReferenceexkluderar du alla tillgångar:
<PackageReference Include="Newtonsoft.Json" Version="9.0.1">
  <ExcludeAssets>All</ExcludeAssets>
</PackageReference>
Lägg sedan till din egen referens till lämplig lokal kopia av DLL:en:
<Reference Include="Newtonsoft.Json.dll" />