1 <?xml version="1.0" encoding="utf-8"?>
2 <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4 <UsingTask TaskName="GetPackageVersion" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" />
7 <PackagesNuSpecFiles Include="$(SourceDir)nuget\*.nuspec" />
11 <PackagesOutDir Condition="'$(PackagesOutDir)' == ''">$(OutDir)Packages\</PackagesOutDir>
12 <PackagesBasePath Condition="'$(PackagesBasePath)' == ''">$(OutDir)</PackagesBasePath>
15 <UsingTask TaskName="NuGetPack" AssemblyFile="$(PackagingTaskDir)Microsoft.DotNet.Build.Tasks.Packaging.dll"/>
17 <Target Name="BuildPackages"
18 DependsOnTargets="AddNuGetPackageVersionMetadataToNuspecs"
19 Condition="'$(SkipBuildPackages)' != 'true'">
21 <!-- Create package output directory -->
22 <MakeDir Directories="$(PackagesOutDir)" />
26 Condition="'@(PackagesNuSpecFiles)'!=''"
27 Nuspecs="%(PackagesNuSpecFiles.FullPath)"
28 OutputDirectory="$(PackagesOutDir)"
29 BaseDirectory="$(PackagesBasePath)"
30 PackageVersion="%(PackagesNuSpecFiles.PackageVersion)"
31 ExcludeEmptyDirectories="true"
32 NuspecProperties="@(NuspecProperties)"/>
35 Condition="'@(PackagesNuSpecFiles)'!=''"
37 Text="%(PackagesNuSpecFiles.Filename) NuGet Package -> $(PackagesOutDir)%(PackagesNuSpecFiles.Filename).%(PackagesNuSpecFiles.PackageVersion).nupkg" />
40 <PackagesForPublishing Include="$(PackagesOutDir)*.nupkg" />
43 <!-- push all packages to a server if one has been specified -->
45 Condition="'@(PackagesForPublishing)' != '' and '$(PublishPackageSource)' != ''"
46 Command="$(NuGetExe) push "%(PackagesForPublishing.Identity)" -s $(PublishPackageSource)" />
51 Name="AddNuGetPackageVersionMetadataToNuspecs"
52 Condition="'@(PackagesNuSpecFiles)'!=''"
53 Outputs="%(PackagesNuSpecFiles.Identity)"
54 DependsOnTargets="$(GetNuGetPackageVersionsDependsOn)">
57 <SelectedPackageVersion>$(BuildNumberMajor)-$(BuildNumberMinor)</SelectedPackageVersion>
61 Condition="Exists('$(ToolsDir)Microsoft.DotNet.Build.Tasks.dll') and $(DoNotGeneratePackageVersion) != 'true'"
62 RevisionNumber="$(SelectedPackageVersion)"
63 NuSpecFile="%(PackagesNuSpecFiles.Identity)">
64 <Output PropertyName="_TempPackageVersion" TaskParameter="PackageVersion" />
67 <!-- Assign the package version that was automatically generated from the nuspecs -->
69 Condition="$(DoNotGeneratePackageVersion) != 'true'">
70 <PackagesNuSpecFiles Condition="'%(PackagesNuSpecFiles.Identity)' == '%(Identity)'">
71 <PackageVersion>$(_TempPackageVersion)</PackageVersion>
72 </PackagesNuSpecFiles>
75 <!-- Assign the package version that was provided by the user -->
77 Condition="$(DoNotGeneratePackageVersion) == 'true' and $(PackageVersion) != ''">
78 <PackagesNuSpecFiles Condition="'%(PackagesNuSpecFiles.Identity)' == '%(Identity)'">
79 <PackageVersion>$(PackageVersion)</PackageVersion>
80 </PackagesNuSpecFiles>
84 Condition="$(DoNotGeneratePackageVersion) == 'true' and $(PackageVersion) == ''"
85 Text="When DoNotGeneratePackageVersion is set to 'true' the user has to provide a PackageVersion property that applies to all nuget packages"
89 <_TempPackageVersion />
94 <LocalPublishPropsFile Condition="'$(LocalPublishPropsFile)'==''">$(PackagesDir)/localpublish.props</LocalPublishPropsFile>
95 <NugetPackageBuildTargets Condition="'$(NugetPackageBuildTargets)'==''">BuildPackages</NugetPackageBuildTargets>
98 <Import Condition="Exists('$(LocalPublishPropsFile)')" Project="$(LocalPublishPropsFile)"/>
100 <!-- Publish the packages locally -->
101 <Target Name="LocalPackagePublish" Condition="'@(LocalPackages)'!=''"
102 Inputs="%(LocalPackages.Identity)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion).nupkg;%(LocalPackages.InstallLocation)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion)"
103 Outputs="%(LocalPackages.InstallLocation)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion)/MODIFIED.txt"
104 AfterTargets="$(NugetPackageBuildTargets)">
106 <!-- Generate the packages.config -->
108 <LocalPackageConfigLine Include="<?xml version="1.0" encoding="utf-8"?>" />
109 <LocalPackageConfigLine Include="<packages>" />
110 <LocalPackageConfigLine Include="<package id="%(LocalPackages.PackageName)" version="%(LocalPackages.PackageVersion)" />"/>
111 <LocalPackageConfigLine Include="</packages>" />
115 <RestoreConfig>%(LocalPackages.InstallLocation)/packages.%(LocalPackages.PackageName).config</RestoreConfig>
118 <WriteLinesToFile File="$(RestoreConfig)" Lines="@(LocalPackageConfigLine)" Overwrite="true" />
119 <Message Text="Generated $(RestoreConfig) for '%(LocalPackages.PackageName).%(LocalPackages.PackageVersion).nupkg'" />
122 <LocalPackagesSources>@(LocalPackages, ';')</LocalPackagesSources>
124 <Message Text="Generated package install sources: '$(LocalPackages)'"/>
126 <!-- Remove existing directories -->
127 <RemoveDir Directories="%(LocalPackages.InstallLocation)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion)" />
129 <!-- Restoring the packages -->
130 <Exec Command="$(NuGetExe) install "$(RestoreConfig)" -Source $(LocalPackagesSources) -NoCache -Prerelease -OutputDirectory "%(LocalPackages.InstallLocation)"" />
132 <!-- Write a file in the packages folder to let the user know this is not the original package -->
134 <NotOriginalPackages Include="The package was restored from $(LocalPackagesSources)" />
136 <WriteLinesToFile File="%(LocalPackages.InstallLocation)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion)/MODIFIED.txt" Lines="@(NotOriginalPackages)" Overwrite="true" />