-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPublish.targets
180 lines (155 loc) · 12.7 KB
/
Publish.targets
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
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Package" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition="$(Configuration) == ''">Release</Configuration>
<BaseDir Condition="$(BaseDir) == ''">..</BaseDir>
<SourceDir Condition="$(SourceDir) == ''">$(BaseDir)\Source</SourceDir>
<NugetDir Condition="$(NugetDir) == ''">$(SourceDir)</NugetDir>
<BuildOutputDir Condition="$(BuildOutputDir) == ''">$(BaseDir)\BuildOutput\$(Configuration)</BuildOutputDir>
<BuildOutputPclDir Condition="$(BuildOutputPclDir) == ''">$(BaseDir)\BuildOutput\Pcl\$(Configuration)</BuildOutputPclDir>
<TargetDir Condition="$(TargetDir) == ''">$(BaseDir)\BuildOutput\Nuget\$(Configuration)</TargetDir>
<PackageTargets Condition="$(PackageTargets) == ''">Build</PackageTargets>
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<Platform Condition="$(Platform) == ''">Windows</Platform>
<MSBuildCommunityVersion>1.4.0.78</MSBuildCommunityVersion>
<MSBuildCommunityTasksPath>$(MSBuildThisFileDirectory)\packages\MSBuildTasks.$(MSBuildCommunityVersion)\tools</MSBuildCommunityTasksPath>
<MSBuildCommunityTasksLib>$([MSBUILD]::Unescape($(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll))</MSBuildCommunityTasksLib>
<BuildVersion Condition="$(BuildVersion) == ''"></BuildVersion>
<XamarinStudioAddinProject>$(SourceDir)\Addins\Eto.Addin.XamarinStudio\Eto.Addin.XamarinStudio.csproj</XamarinStudioAddinProject>
<mdtool Condition="$(mdtool) == '' and $(Platform) != 'Windows'">"/Applications/Xamarin Studio.app/Contents/MacOS/mdtool"</mdtool>
<mdtool Condition="$(mdtool) == '' and $(Platform) == 'Windows'">"c:\Program Files (x86)\Xamarin Studio\bin\mdtool.exe"</mdtool>
</PropertyGroup>
<Import Project="Utilities.targets" Condition="$(UtilitiesImported) == ''" />
<Import Project="$(NugetDir)\.nuget\NuGet.targets" Condition="Exists('$(NugetDir)\.nuget\NuGet.targets')" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FileUpdate" />
<Target Name="UpdateAssemblyInfo" Condition="$(BuildVersion) != ''">
<Exec Command="nuget install MSBuildTasks -Version $(MSBuildCommunityVersion) -OutputDirectory packages"
Condition="! Exists('$(MSBuildCommunityTasksPath)')" />
<FileUpdate Files="$(SourceDir)\Shared\GlobalAssemblyInfo.cs"
Regex='AssemblyInformationalVersion[(]".*"[)]'
Encoding="utf-8-without-bom"
ReplacementText='AssemblyInformationalVersion("$(BuildVersion)")' />
<ItemGroup>
<VSTemplateFiles Include="$(SourceDir)\Addins\Eto.Addin.VisualStudio\**\*.vstemplate" />
<XSProjFile Include="$(XamarinStudioAddinProject)" />
<!-- Using ItemGroup with text to prevent messing up backslashes in xbuild -->
<NupkgReg Include="1"><Text><![CDATA[(?<=Eto.[\w\.]+?)(\.\d+)*([-]\w+\d*)?\.nupkg]]></Text></NupkgReg>
<VSTemplateReg Include="1"><Text><![CDATA[(?<=id\s*[=]\s*"Eto\.[\w\.]+"\s+)version\s*=\s*"[^"]+"]]></Text></VSTemplateReg>
</ItemGroup>
<FileUpdate Files="@(XSProjFile)"
WarnOnNoUpdate="true"
Regex="@(NupkgReg->'%(Text)')"
ReplacementText='.$(BuildVersion).nupkg' />
<FileUpdate Files="@(VSTemplateFiles)"
Encoding="utf-8-without-bom"
Regex="@(VSTemplateReg->'%(Text)')"
ReplacementText='version="$(BuildVersion)"' />
</Target>
<Target Name="PrepareMac" DependsOnTargets="UpdateAssemblyInfo">
<Exec Command="$(mdtool) build -t:Clean -p:Eto.XamMac -c:'$(Configuration)' $(SourceDir)\Eto.sln" />
<Exec Command="$(mdtool) build -t:Clean -p:Eto -c:'$(Configuration)' $(SourceDir)\Eto.sln" />
<Exec Command="$(mdtool) build -p:Eto.XamMac -c:'$(Configuration)|Mac' $(SourceDir)\Eto.sln" />
<!-- need to clean between non-pcl and pcl otherwise xbuild gets confused -->
<Exec Command="$(mdtool) build -t:Clean -p:'Eto.XamMac - Pcl' -c:'$(Configuration)' '$(SourceDir)\Eto - Pcl.sln'" />
<Exec Command="$(mdtool) build -t:Clean -p:'Eto - Pcl' -c:'$(Configuration)' '$(SourceDir)\Eto - Pcl.sln'" />
<Exec Command="$(mdtool) build -p:'Eto.XamMac - Pcl' -c:'$(Configuration)|Mac' '$(SourceDir)\Eto - Pcl.sln'" />
<Exec Command="$(mdtool) build -p:'Eto.XamMac2 - Pcl' -c:'$(Configuration)|Mac' '$(SourceDir)\Eto - Pcl.sln'" />
<Exec Command="$(mdtool) build -p:'Eto.iOS' -c:'$(Configuration)|iPhoneSimulator' '$(SourceDir)\Eto - iOS.sln'" />
</Target>
<Target Name="Package" DependsOnTargets="UpdateAssemblyInfo">
<!-- using exec since xbuild messes up properties when using msbuild task -->
<Exec Command="xbuild /t:'$(PackageTargets)' /p:'Configuration=$(Configuration);Platform=$(Platform)' '$(SourceDir)\Eto.sln'" Condition="$(Platform) != 'Windows'"/>
<Exec Command="xbuild /t:'$(PackageTargets)' /p:'Configuration=$(Configuration);Platform=$(Platform)' '$(SourceDir)\Eto - Pcl.sln'" Condition="$(Platform) != 'Windows'"/>
<Exec Command="xbuild /t:'$(PackageTargets)' /p:'Configuration=$(Configuration)' '$(SourceDir)\Eto.iOS\Eto.iOS.csproj'" Condition="$(Platform) != 'Windows'"/>
<MSBuild Projects="$(SourceDir)\Eto.sln" Targets="$(PackageTargets)" Properties="Configuration=$(Configuration);Platform=$(Platform)" Condition="$(Platform) == 'Windows'"/>
<MSBuild Projects="$(SourceDir)\Eto - Pcl.sln" Targets="$(PackageTargets)" Properties="Configuration=$(Configuration);Platform=$(Platform)" Condition="$(Platform) == 'Windows'"/>
<!--MSBuild Projects="$(SourceDir)\Eto - WinRT.sln" Targets="$(PackageTargets)" Properties="Configuration=$(Configuration);Platform=Any CPU" /-->
<MSBuild Projects="$(SourceDir)\Eto.WinRT\Eto.WinRT.csproj" Properties="Configuration=$(Configuration);BuildProjectReferences=false" Condition="$(Platform) == 'Windows'" />
<MSBuild Projects="$(SourceDir)\Eto.Test\Eto.Test.WinRT\Eto.Test.WinRT.csproj" Properties="Configuration=$(Configuration);BuildProjectReferences=false" Condition="$(Platform) == 'Windows'" />
<!-- build XamMac separately if it hasn't been built on mac -->
<MSBuild Projects="$(SourceDir)\Eto.Mac\Eto.XamMac.csproj" Targets="$(PackageTargets)" Properties="Configuration=$(Configuration);BuildProjectReferences=false" Condition="! Exists('$(BuildOutputDir)\Eto.XamMac.dll')" />
<MSBuild Projects="$(SourceDir)\Eto.Mac\Eto.XamMac - Pcl.csproj" Targets="$(PackageTargets)" Properties="Configuration=$(Configuration);BuildProjectReferences=false" Condition="! Exists('$(BuildOutputPclDir)\Eto.XamMac.dll')" />
<!-- Nuget has problems with files that have no extension -->
<Copy SourceFiles="$(BuildOutputDir)\LICENSE" DestinationFiles="$(BuildOutputDir)\LICENSE.txt" />
<ItemGroup>
<Package Include="Eto">
<Assembly>Eto.dll</Assembly>
</Package>
<Package Include="Eto.Platform.Gtk">
<Assembly>Eto.Gtk2.dll</Assembly>
</Package>
<Package Include="Eto.Platform.Gtk3">
<Assembly>Eto.Gtk3.dll</Assembly>
</Package>
<Package Include="Eto.Platform.Mac">
<Assembly>Eto.Mac.dll</Assembly>
</Package>
<Package Include="Eto.Platform.Mac64">
<Assembly>Eto.Mac64.dll</Assembly>
</Package>
<Package Include="Eto.Platform.XamMac">
<Assembly>Eto.XamMac.dll</Assembly>
</Package>
<Package Include="Eto.Platform.XamMac2">
<Assembly>Eto.XamMac2.dll</Assembly>
</Package>
<Package Include="Eto.Platform.Windows">
<Assembly>Eto.WinForms.dll</Assembly>
</Package>
<Package Include="Eto.Platform.Direct2D">
<Assembly>Eto.Direct2D.dll</Assembly>
</Package>
<Package Include="Eto.Platform.Wpf">
<Assembly>Eto.Wpf.dll</Assembly>
</Package>
<Package Include="Eto.Platform.WinRT">
<Assembly>Eto.WinRT.dll</Assembly>
</Package>
<Package Include="Eto.Platform.iOS">
<Assembly>Eto.iOS.dll</Assembly>
</Package>
<Package Include="Eto.Serialization.Json">
<Assembly>Eto.Serialization.Json.dll</Assembly>
</Package>
<Package Include="Eto.Serialization.Xaml">
<Assembly>Eto.Serialization.Xaml.dll</Assembly>
</Package>
</ItemGroup>
<Exec Command="xbuild /t:'BuildPackage' /p:'ProjectPath=$(BaseDir);ProjectFile=nuspec/%(Package.Identity).nuspec;TargetDir=$(TargetDir);NuspecInfoAssembly=$(BuildOutputPclDir)\%(Assembly)' '$(MSBuildProjectFile)'" Condition="$(Platform) != 'Windows' and Exists('$(BuildOutputPclDir)\%(Assembly)')"/>
<MSBuild Targets="BuildPackage" Properties="ProjectPath=$(BaseDir);ProjectFile=nuspec/%(Package.Identity).nuspec;NuspecInfoAssembly=$(BuildOutputPclDir)\%(Assembly);TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)" Condition="$(Platform) == 'Windows' and Exists('$(BuildOutputPclDir)\%(Assembly)')"/>
<GetAssemblyInfo AssemblyFileName="$(BuildOutputDir)\Eto.dll">
<Output TaskParameter="AssemblyInformationalVersion" PropertyName="AssemblyVersion" />
</GetAssemblyInfo>
<ItemGroup>
<StandalonePackage Include="Eto.Platform.MacAppTemplate\Eto.Platform.Mac.Template"/>
<StandalonePackage Include="Eto.Forms.Sample\Eto.Forms.Sample"/>
</ItemGroup>
<Exec Command="xbuild /t:'BuildPackage' /p:'ProjectPath=nuspec/%(StandalonePackage.RelativeDir);ProjectFile=nuspec/%(StandalonePackage.Identity).nuspec;TargetDir=$(TargetDir);NugetBuildOptions=-Version $(AssemblyVersion)' '$(MSBuildProjectFile)'" Condition="$(Platform) != 'Windows'"/>
<MSBuild Targets="BuildPackage" Properties="ProjectPath=nuspec\%(StandalonePackage.RelativeDir)\;ProjectFile=nuspec/%(StandalonePackage.Identity).nuspec;TargetDir=$(TargetDir);NugetBuildOptions=-Version $(AssemblyVersion)" Projects="$(MSBuildProjectFile)" Condition="$(Platform) == 'Windows'"/>
<!-- addins -->
<!--
<Exec Command="xbuild /t:'$(PackageTargets)' /p:'Configuration=$(Configuration)' '$(XamarinStudioAddinProject)'" Condition="$(Platform) != 'Windows'"/>
<MSBuild Projects="$(XamarinStudioAddinProject)" Targets="$(PackageTargets)" Properties="Configuration=$(Configuration);BuildProjectReferences=false" Condition="$(Platform) == 'Windows'" />
-->
</Target>
<Target Name="Publish">
<GetAssemblyInfo AssemblyFileName="$(BuildOutputDir)\Eto.dll">
<Output TaskParameter="AssemblyInformationalVersion" PropertyName="AssemblyVersion" />
</GetAssemblyInfo>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Forms.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.Gtk.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.Gtk3.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.Mac.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.Mac64.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.Windows.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.Wpf.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.XamMac.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.XamMac2.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<!--MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.WinRT.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/-->
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Serialization.Json.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Serialization.Xaml.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.Mac.Template.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Forms.Sample.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
<MSBuild Targets="PublishPackage" Properties="NupkgName=Eto.Platform.iOS.$(AssemblyVersion).nupkg;TargetDir=$(TargetDir)" Projects="$(MSBuildProjectFile)"/>
</Target>
</Project>