1
+ <?xml version =" 1.0" encoding =" utf-8" ?>
2
+ <Project xmlns =" http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion =" 12.0" >
3
+ <PropertyGroup >
4
+ <Configuration Condition =" '$(Configuration)'==''" >Debug</Configuration >
5
+
6
+ <!-- Source Directories -->
7
+ <BaseDirectory Condition =" '$(BaseDirectory)' == ''" >$(MSBuildProjectDirectory)\..\..</BaseDirectory >
8
+ <BaseDirectory Condition =" !Exists('$(BaseDirectory)\source')" >..</BaseDirectory >
9
+
10
+ <SourceDirectory >$(BaseDirectory)\source</SourceDirectory >
11
+ <SourceDirectory >$([System.IO.Directory]::GetParent($(SourceDirectory)))\source</SourceDirectory >
12
+
13
+ <!-- Build Directories -->
14
+ <BuildOutputDirectory >$(BaseDirectory)\build</BuildOutputDirectory >
15
+ <BuildOutputDirectory >$([System.IO.Directory]::GetParent($(BuildOutputDirectory)))\build</BuildOutputDirectory >
16
+ <BuildBinDirectory >$(BuildOutputDirectory)\bin</BuildBinDirectory >
17
+ <BuildDocDirectory >$(BuildOutputDirectory)\doc</BuildDocDirectory >
18
+ <BuildLogDirectory >$(BuildOutputDirectory)\log</BuildLogDirectory >
19
+ <BuildPackageDirectory >$(BuildOutputDirectory)\package</BuildPackageDirectory >
20
+ <BuildWorkDirectory >$(BuildOutputDirectory)\work</BuildWorkDirectory >
21
+
22
+ <DependencyDirectory >$(BaseDirectory)\dependencies</DependencyDirectory >
23
+ <NuGetFolder >$(SourceDirectory)\.nuget</NuGetFolder >
24
+
25
+ <ConfigurationDirectory >$(BaseDirectory)\configuration</ConfigurationDirectory >
26
+
27
+ <ConfigurationDirectory >$([System.IO.Directory]::GetParent($(ConfigurationDirectory)))\Configuration</ConfigurationDirectory >
28
+ <NuGetPath >$([System.IO.Directory]::GetParent($(NuGetFolder)))\.nuget</NuGetPath >
29
+
30
+ </PropertyGroup >
31
+
32
+ <ItemGroup >
33
+ <BaseDirectory Include =" $(BaseDirectory)" />
34
+ <ConfigurationDirectory Include =" $(ConfigurationDirectory)" />
35
+ </ItemGroup >
36
+
37
+ <Import Project =" $(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
38
+
39
+ <Target Name =" Prepare" >
40
+ <Message Text =" MSBuildProjectDirectory: $(MSBuildProjectDirectory)" Importance =" High" />
41
+ <MakeDir Directories =" $(BuildOutputDirectory)" />
42
+ <MakeDir Directories =" $(BuildPackageDirectory)" />
43
+ <MakeDir Directories =" $(BuildWorkDirectory)" />
44
+ </Target >
45
+
46
+ <Target Name =" AfterBuild" DependsOnTargets =" Prepare" >
47
+ <PropertyGroup >
48
+ <ProjectName >$(AssemblyName)</ProjectName >
49
+ <ProjectWorkDirectory >$(BuildWorkDirectory)\$(ProjectName)</ProjectWorkDirectory >
50
+ <ProjectWorkPackageDirectory >$(ProjectWorkDirectory)</ProjectWorkPackageDirectory >
51
+ <ProjectWorkLibDirectory >$(ProjectWorkPackageDirectory)\lib</ProjectWorkLibDirectory >
52
+ <ProjectWorkLibNet40Directory >$(ProjectWorkLibDirectory)\net40</ProjectWorkLibNet40Directory >
53
+ <ProjectWorkLibNet45Directory >$(ProjectWorkLibDirectory)\net45</ProjectWorkLibNet45Directory >
54
+
55
+ <NuSpecFileLocation >$(ConfigurationDirectory)\$(ProjectName).nuspec</NuSpecFileLocation >
56
+ <NuSpecFile >$(ProjectWorkDirectory)\$(ProjectName).nuspec</NuSpecFile >
57
+ <NuGetContentDirectory >$(ConfigurationDirectory)\packageContent</NuGetContentDirectory >
58
+ </PropertyGroup >
59
+ <ItemGroup >
60
+ <NuSpecFile Include =" $(NuSpecFileLocation)" />
61
+ <OutputFiles Include =" $(BuildBinDirectory)\$(ProjectName).dll" />
62
+ <ContentFiles Include =" $(NuGetContentDirectory)\**\*.*" />
63
+ <ExistingFiles Include =" $(BuildPackageDirectory)\$(ProjectName)*.*" />
64
+ </ItemGroup >
65
+
66
+ <RemoveDir Directories =" $(ProjectWorkDirectory)" />
67
+ <Delete Files =" @(ExistingFiles)" />
68
+
69
+ <Message Text =" Creating package for $(ProjectName)" Importance =" high" />
70
+
71
+ <GetInformationalVersion AssemblyFile =" @(OutputFiles)" >
72
+ <Output TaskParameter =" Version" PropertyName =" Version" />
73
+ </GetInformationalVersion >
74
+
75
+ <GetNewDevVersion OldVersion =" $(Version)" Condition =" '$(Configuration)' == 'Debug'" >
76
+ <Output TaskParameter =" NewVersion" PropertyName =" Version" />
77
+ </GetNewDevVersion >
78
+
79
+ <MakeDir Directories =" $(ProjectWorkDirectory)" />
80
+ <MakeDir Directories =" $(ProjectWorkPackageDirectory)" />
81
+ <MakeDir Directories =" $(ProjectWorkPackageLibDirectory)" />
82
+ <MakeDir Directories =" $(ProjectWorkPackageLibNet40Directory)" />
83
+ <MakeDir Directories =" $(ProjectWorkPackageLibNet45Directory)" />
84
+
85
+ <Copy SourceFiles =" @(NuSpecFile)" DestinationFiles =" @(NuSpecFile->'$(ProjectWorkDirectory)\%(Filename)%(Extension)')" />
86
+
87
+ <Copy SourceFiles =" @(OutputFiles)" DestinationFiles =" @(OutputFiles->'$(ProjectWorkLibNet40Directory)\%(Filename)%(Extension)')" />
88
+ <Copy SourceFiles =" @(OutputFiles)" DestinationFiles =" @(OutputFiles->'$(ProjectWorkLibNet45Directory)\%(Filename)%(Extension)')" />
89
+
90
+ <Copy SourceFiles =" @(ContentFiles)" DestinationFiles =" @(ContentFiles->'$(ProjectWorkPackageDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" />
91
+
92
+ <XmlUpdate XmlFileName =" $(NuSpecFile)" XPath =" //version" Value =" $(Version)" />
93
+
94
+ <Exec Command =' $(NuGetPath)\nuget.exe pack "$(NuSpecFile)"' WorkingDirectory =" $(ProjectWorkPackageDirectory)" />
95
+
96
+ <ItemGroup >
97
+ <NuGetPackage Include =" $(ProjectWorkDirectory)\**\*.nupkg" />
98
+ </ItemGroup >
99
+
100
+ <Copy SourceFiles =" @(NuGetPackage)" DestinationFiles =" @(NuGetPackage->'$(BuildPackageDirectory)\%(Filename)%(Extension)')" />
101
+
102
+ <XmlPeek
103
+ Namespaces=" < Namespace Prefix='nuget' Uri='http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd' /> "
104
+ Query=" //id/text()"
105
+ XmlInputPath=" $(NuSpecFileLocation)" >
106
+ <Output TaskParameter =" Result" ItemName =" PackageName" />
107
+ </XmlPeek >
108
+
109
+ <!-- Create ZipPackage -->
110
+ <Zip Flatten =" true" Files =" @(OutputFiles)" ZipFileName =" $(BuildPackageDirectory)\@(PackageName).$(Version).zip" WorkingDirectory =" $(ProjectWorkPackageDirectory)" />
111
+
112
+ <Message Text =" Installing package to local NuGet repo" Importance =" high" Condition =" '$(NUGET_LOCALREPO)' != ''" />
113
+ <CallTarget Targets =" Install" Condition =" '$(NUGET_LOCALREPO)' != ''" />
114
+ </Target >
115
+
116
+ <Target Name =" Install" >
117
+ <ItemGroup >
118
+ <NuGetPackage Include =" $(BuildPackageDirectory)\$(AssemblyName)*.nupkg" />
119
+ </ItemGroup >
120
+ <Copy SourceFiles =" @(NuGetPackage)" DestinationFolder =" $(NUGET_LOCALREPO)" />
121
+ </Target >
122
+
123
+ <!-- Task for retrieving ProductVersion from an Assembly -->
124
+ <UsingTask TaskName =" GetInformationalVersion" TaskFactory =" CodeTaskFactory" AssemblyFile =" $(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll" >
125
+ <ParameterGroup >
126
+ <AssemblyFile ParameterType =" System.String" Required =" true" />
127
+ <Version ParameterType =" System.String" Output =" true" />
128
+ </ParameterGroup >
129
+ <Task >
130
+ <Using Namespace =" System.Diagnostics" />
131
+ <Code Type =" Fragment" Language =" cs" >
132
+ <![CDATA[
133
+ Log.LogMessage("Getting version details of assembly " + this.AssemblyFile, MessageImportance.High);
134
+ this.Version = FileVersionInfo.GetVersionInfo(this.AssemblyFile.Split(';')[0]).ProductVersion;
135
+ Log.LogMessage("AssemblyVersion: " + this.Version, MessageImportance.High);
136
+ ]]>
137
+ </Code >
138
+ </Task >
139
+ </UsingTask >
140
+
141
+ <!-- Task for generating a new version for local development -->
142
+ <UsingTask TaskName =" GetNewDevVersion" TaskFactory =" CodeTaskFactory" AssemblyFile =" $(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll" >
143
+ <ParameterGroup >
144
+ <OldVersion ParameterType =" System.String" Required =" true" />
145
+ <NewVersion ParameterType =" System.String" Output =" true" />
146
+ </ParameterGroup >
147
+ <Task >
148
+ <Using Namespace =" System.Diagnostics" />
149
+ <Code Type =" Fragment" Language =" cs" >
150
+ <![CDATA[
151
+ Log.LogMessage("Getting a new version for " + this.OldVersion, MessageImportance.High);
152
+ Version version = new Version(this.OldVersion.Split('-')[0]);
153
+ this.NewVersion = version.ToString() + "-build" + DateTime.Now.ToString("yyyyMMddHHmmss");
154
+ Log.LogMessage("New Version: " + this.NewVersion, MessageImportance.High);
155
+ ]]>
156
+ </Code >
157
+ </Task >
158
+ </UsingTask >
159
+
160
+ </Project >
0 commit comments