blob: 7e6b3dd75e30b331e161a8a418e34ad6a8a56f08 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="GetPackageVersion" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" />
<ItemGroup>
<PackagesNuSpecFiles Include="$(SourceDir)nuget\*.nuspec" />
</ItemGroup>
<PropertyGroup>
<PackagesOutDir Condition="'$(PackagesOutDir)' == ''">$(OutDir)Packages\</PackagesOutDir>
<PackagesBasePath Condition="'$(PackagesBasePath)' == ''">$(OutDir)</PackagesBasePath>
</PropertyGroup>
<UsingTask TaskName="NuGetPack" AssemblyFile="$(PackagingTaskDir)Microsoft.DotNet.Build.Tasks.Packaging.dll"/>
<Target Name="BuildPackages"
DependsOnTargets="AddNuGetPackageVersionMetadataToNuspecs"
Condition="'$(SkipBuildPackages)' != 'true'">
<!-- Create package output directory -->
<MakeDir Directories="$(PackagesOutDir)" />
<!-- Make package -->
<NugetPack
Condition="'@(PackagesNuSpecFiles)'!=''"
Nuspecs="%(PackagesNuSpecFiles.FullPath)"
OutputDirectory="$(PackagesOutDir)"
BaseDirectory="$(PackagesBasePath)"
PackageVersion="%(PackagesNuSpecFiles.PackageVersion)"
ExcludeEmptyDirectories="true"
NuspecProperties="@(NuspecProperties)"/>
<Message
Condition="'@(PackagesNuSpecFiles)'!=''"
Importance="High"
Text="%(PackagesNuSpecFiles.Filename) NuGet Package -> $(PackagesOutDir)%(PackagesNuSpecFiles.Filename).%(PackagesNuSpecFiles.PackageVersion).nupkg" />
<ItemGroup>
<PackagesForPublishing Include="$(PackagesOutDir)*.nupkg" />
</ItemGroup>
<!-- push all packages to a server if one has been specified -->
<Exec
Condition="'@(PackagesForPublishing)' != '' and '$(PublishPackageSource)' != ''"
Command="$(NuGetExe) push "%(PackagesForPublishing.Identity)" -s $(PublishPackageSource)" />
</Target>
<Target
Name="AddNuGetPackageVersionMetadataToNuspecs"
Condition="'@(PackagesNuSpecFiles)'!=''"
Outputs="%(PackagesNuSpecFiles.Identity)"
DependsOnTargets="$(GetNuGetPackageVersionsDependsOn)">
<PropertyGroup>
<SelectedPackageVersion>$(BuildNumberMajor)-$(BuildNumberMinor)</SelectedPackageVersion>
</PropertyGroup>
<GetPackageVersion
Condition="Exists('$(ToolsDir)Microsoft.DotNet.Build.Tasks.dll') and $(DoNotGeneratePackageVersion) != 'true'"
RevisionNumber="$(SelectedPackageVersion)"
NuSpecFile="%(PackagesNuSpecFiles.Identity)">
<Output PropertyName="_TempPackageVersion" TaskParameter="PackageVersion" />
</GetPackageVersion>
<!-- Assign the package version that was automatically generated from the nuspecs -->
<ItemGroup
Condition="$(DoNotGeneratePackageVersion) != 'true'">
<PackagesNuSpecFiles Condition="'%(PackagesNuSpecFiles.Identity)' == '%(Identity)'">
<PackageVersion>$(_TempPackageVersion)</PackageVersion>
</PackagesNuSpecFiles>
</ItemGroup>
<!-- Assign the package version that was provided by the user -->
<ItemGroup
Condition="$(DoNotGeneratePackageVersion) == 'true' and $(PackageVersion) != ''">
<PackagesNuSpecFiles Condition="'%(PackagesNuSpecFiles.Identity)' == '%(Identity)'">
<PackageVersion>$(PackageVersion)</PackageVersion>
</PackagesNuSpecFiles>
</ItemGroup>
<Error
Condition="$(DoNotGeneratePackageVersion) == 'true' and $(PackageVersion) == ''"
Text="When DoNotGeneratePackageVersion is set to 'true' the user has to provide a PackageVersion property that applies to all nuget packages"
/>
<PropertyGroup>
<_TempPackageVersion />
</PropertyGroup>
</Target>
<PropertyGroup>
<LocalPublishPropsFile Condition="'$(LocalPublishPropsFile)'==''">$(PackagesDir)/localpublish.props</LocalPublishPropsFile>
<NugetPackageBuildTargets Condition="'$(NugetPackageBuildTargets)'==''">BuildPackages</NugetPackageBuildTargets>
</PropertyGroup>
<Import Condition="Exists('$(LocalPublishPropsFile)')" Project="$(LocalPublishPropsFile)"/>
<!-- Publish the packages locally -->
<Target Name="LocalPackagePublish" Condition="'@(LocalPackages)'!=''"
Inputs="%(LocalPackages.Identity)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion).nupkg;%(LocalPackages.InstallLocation)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion)"
Outputs="%(LocalPackages.InstallLocation)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion)/MODIFIED.txt"
AfterTargets="$(NugetPackageBuildTargets)">
<!-- Generate the packages.config -->
<ItemGroup>
<LocalPackageConfigLine Include="<?xml version="1.0" encoding="utf-8"?>" />
<LocalPackageConfigLine Include="<packages>" />
<LocalPackageConfigLine Include="<package id="%(LocalPackages.PackageName)" version="%(LocalPackages.PackageVersion)" />"/>
<LocalPackageConfigLine Include="</packages>" />
</ItemGroup>
<PropertyGroup>
<RestoreConfig>%(LocalPackages.InstallLocation)/packages.%(LocalPackages.PackageName).config</RestoreConfig>
</PropertyGroup>
<WriteLinesToFile File="$(RestoreConfig)" Lines="@(LocalPackageConfigLine)" Overwrite="true" />
<Message Text="Generated $(RestoreConfig) for '%(LocalPackages.PackageName).%(LocalPackages.PackageVersion).nupkg'" />
<PropertyGroup>
<LocalPackagesSources>@(LocalPackages, ';')</LocalPackagesSources>
</PropertyGroup>
<Message Text="Generated package install sources: '$(LocalPackages)'"/>
<!-- Remove existing directories -->
<RemoveDir Directories="%(LocalPackages.InstallLocation)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion)" />
<!-- Restoring the packages -->
<Exec Command="$(NuGetExe) install "$(RestoreConfig)" -Source $(LocalPackagesSources) -NoCache -Prerelease -OutputDirectory "%(LocalPackages.InstallLocation)"" />
<!-- Write a file in the packages folder to let the user know this is not the original package -->
<ItemGroup>
<NotOriginalPackages Include="The package was restored from $(LocalPackagesSources)" />
</ItemGroup>
<WriteLinesToFile File="%(LocalPackages.InstallLocation)/%(LocalPackages.PackageName).%(LocalPackages.PackageVersion)/MODIFIED.txt" Lines="@(NotOriginalPackages)" Overwrite="true" />
</Target>
</Project>
|