-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.proj
183 lines (142 loc) · 6.09 KB
/
build.proj
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Start">
<!-- Variables -->
<PropertyGroup>
<!-- Release Folder -->
<!-- To change the output folder, use the following parameter: /p:BuildDir=C:\BuildTest-->
<ReleaseDir>release</ReleaseDir>
<!-- Build Folder -->
<OutDir>src\MissileSharp\bin\Release</OutDir>
<LauncherOutDir>src\MissileSharp.Launcher\bin\Release</LauncherOutDir>
<!-- create zip file? -->
<CreateZip>0</CreateZip>
<!-- specify path for MSBuild Community Tasks (MSBuild.Community.Tasks.Targets needs this path) -->
<MSBuildCommunityTasksPath>..\net20</MSBuildCommunityTasksPath>
<!-- create NuGet package? -->
<CreatePackage>0</CreatePackage>
<!-- temporary NuGet working folder -->
<NuGetDir>nuget-tmp</NuGetDir>
<!-- run unit tests? -->
<RunTests>0</RunTests>
<!-- Build Folder for test assembly -->
<TestOutDir>src\MissileSharp.Tests\bin\Release</TestOutDir>
<!-- path to NUnit runner -->
<TestNUnitDir>src\packages\NUnit.Runners.2.6.0.12051\tools</TestNUnitDir>
<!-- build ClickOnce setup for launcher? -->
<CreateClickOnce>0</CreateClickOnce>
</PropertyGroup>
<Import Project="src\packages\MSBuildTasks.1.3.0.528\lib\net20\MSBuild.Community.Tasks.Targets" />
<!-- "Autostart" -->
<Target Name="Start">
<CallTarget Targets="DeleteFolders"/>
<CallTarget Targets="Build"/>
<CallTarget Condition="$(RunTests) == '1'" Targets="Test"/>
<CallTarget Targets="CopyRelease"/>
<CallTarget Targets="CopyReleaseLauncher"/>
<CallTarget Condition="$(CreateZip) == '1'" Targets="Zip"/>
<CallTarget Condition="$(CreateZip) == '1'" Targets="ZipLauncher"/>
<CallTarget Condition="$(CreatePackage) == '1'" Targets="NuGet"/>
<CallTarget Condition="$(CreateClickOnce) == '1'" Targets="ClickOnce"/>
</Target>
<!-- delete release folder -->
<Target Name="DeleteFolders">
<RemoveDir Directories="$(ReleaseDir)"/>
<RemoveDir Directories="$(NuGetDir)"/>
</Target>
<!-- compile solution as release -->
<Target Name="Build">
<MSBuild Projects="src\MissileSharp.sln" Properties="Configuration=Release"/>
</Target>
<!-- run unit tests -->
<Target Name="Test">
<CreateItem Include="$(TestOutDir)\*.Tests.dll">
<Output TaskParameter="Include" ItemName="TestAssembly" />
</CreateItem>
<NUnit ToolPath="$(TestNUnitDir)" DisableShadowCopy="true" Assemblies="@(TestAssembly)" Force32Bit="True" />
</Target>
<!-- copy files to release folder -->
<Target Name="CopyRelease">
<MakeDir Directories="$(ReleaseDir)\lib-bin"/>
<ItemGroup>
<ReleaseFiles
Include="$(OutDir)\*.*;
readme.md;
license.txt"
Exclude="$(OutDir)\*.pdb">
</ReleaseFiles>
</ItemGroup>
<Copy SourceFiles="@(ReleaseFiles)" DestinationFolder="$(ReleaseDir)\lib-bin"/>
</Target>
<!-- copy files to launcher release folder -->
<Target Name="CopyReleaseLauncher">
<MakeDir Directories="$(ReleaseDir)\launcher-bin"/>
<ItemGroup>
<LauncherReleaseFiles
Include="$(LauncherOutDir)\*.*;
readme.md;
license.txt"
Exclude="$(LauncherOutDir)\*.pdb;
$(LauncherOutDir)\*.xml">
</LauncherReleaseFiles>
</ItemGroup>
<Copy SourceFiles="@(LauncherReleaseFiles)" DestinationFolder="$(ReleaseDir)\launcher-bin"/>
</Target>
<!-- create zip file with content of release\bin folder -->
<Target Name="Zip">
<CreateItem Include="$(ReleaseDir)\lib-bin\*.*" >
<Output ItemName="ZipFiles" TaskParameter="Include"/>
</CreateItem>
<Zip ZipFileName="$(ReleaseDir)\lib-zip\missilesharp-$(VersionNumber).zip" WorkingDirectory="$(ReleaseDir)\lib-bin" Files="@(ZipFiles)" />
</Target>
<!-- create zip file with content of release\launcher-bin folder -->
<Target Name="ZipLauncher">
<CreateItem Include="$(ReleaseDir)\launcher-bin\*.*" >
<Output ItemName="LauncherZipFiles" TaskParameter="Include"/>
</CreateItem>
<Zip ZipFileName="$(ReleaseDir)\launcher-zip\missilesharp-launcher-$(VersionNumber).zip" WorkingDirectory="$(ReleaseDir)\launcher-bin" Files="@(LauncherZipFiles)" />
</Target>
<!-- create NuGet package-->
<Target Name="NuGet">
<MakeDir Directories="$(NuGetDir)\lib\net40"/>
<MakeDir Directories="$(ReleaseDir)\lib-nuget"/>
<!-- 1. copy the whole release folder (except the assemblies) and the nuspec file into the temp. NuGet folder -->
<ItemGroup>
<PackageFiles1
Include="$(ReleaseDir)\lib-bin\*.*;
nuget\*.nuspec"
Exclude="$(ReleaseDir)\lib-bin\*.dll;
$(ReleaseDir)\lib-bin\*.xml">
</PackageFiles1>
</ItemGroup>
<Copy SourceFiles="@(PackageFiles1)" DestinationFolder="$(NuGetDir)"/>
<!-- 2. copy the assemblies into the net40 subfolder -->
<ItemGroup>
<PackageFiles2
Include="$(ReleaseDir)\lib-bin\m*.dll;
$(ReleaseDir)\lib-bin\*.xml">
</PackageFiles2>
</ItemGroup>
<Copy SourceFiles="@(PackageFiles2)" DestinationFolder="$(NuGetDir)\lib\net40"/>
<!-- 3. create package -->
<Exec Command="src\packages\NuGet.CommandLine.1.8.40002\tools\nuget.exe pack $(NuGetDir)\missilesharp.nuspec -OutputDirectory $(ReleaseDir)\lib-nuget -Version $(VersionNumber)"></Exec>
</Target>
<!-- build ClickOnce setup -->
<Target Name="ClickOnce">
<PropertyGroup>
<PubDir>$(MSBuildProjectDirectory)\$(ReleaseDir)\launcher-clickonce\</PubDir>
<CodeplexPubDir>$(MSBuildProjectDirectory)\$(ReleaseDir)\launcher-clickonce-codeplex\</CodeplexPubDir>
</PropertyGroup>
<!-- 1. publish directly into the release folder -->
<MSBuild
Projects="src\MissileSharp.Launcher\MissileSharp.Launcher.csproj"
Targets="Publish"
Properties="Configuration=Release;
PublishDir=$(PubDir);
ApplicationVersion=$(ClickOnceVersionNumber)" />
<!-- 2. zip the published folder for uploading to CodePlex -->
<ItemGroup>
<ClickOnceFiles Include="$(PubDir)\**\*.*" />
</ItemGroup>
<Zip ZipFileName="$(CodeplexPubDir)\missilesharp-launcher-$(VersionNumber).zip" WorkingDirectory="$(PubDir)" Files="@(ClickOnceFiles)" />
</Target>
</Project>