Files
Umbraco-CMS/build/Build.proj

115 lines
7.5 KiB
XML

<Project InitialTargets="Build" DefaultTargets="AfterBuild" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildCommunityTasksPath>..\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
<UmbracoMSBuildTasksPath>..\UmbracoMSBuildTasks</UmbracoMSBuildTasksPath>
</PropertyGroup>
<Import Project="..\lib\Umbraco\UmbracoMSBuildTasks\Umbraco.MSBuild.Tasks.Targets" />
<Import Project="..\lib\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<PropertyGroup>
<BuildFolder>_BuildOutput\</BuildFolder>
<BuildZipFileName>UmbracoWebApp.zip</BuildZipFileName>
<BuildZipFileNameBin>UmbracoAllBinaries.zip</BuildZipFileNameBin>
<IncludeSymbols>False</IncludeSymbols>
<BuildFolderRelativeToProjects>..\..\build\$(BuildFolder)</BuildFolderRelativeToProjects>
<SolutionBinFolder>$(BuildFolder)bin\</SolutionBinFolder>
<WebAppFolder>$(BuildFolder)WebApp\</WebAppFolder>
<SolutionBinFolderRelativeToProjects>$(BuildFolderRelativeToProjects)bin\</SolutionBinFolderRelativeToProjects>
<SolutionBinBuildFolderWildcard>$(SolutionBinFolder)**\*.*</SolutionBinBuildFolderWildcard>
<SolutionBinBuildFolderExclusionWildcard>$(SolutionBinFolder)**\Web.Template.*;$(SolutionBinFolder)**\*.pdb</SolutionBinBuildFolderExclusionWildcard>
<WebAppFolderRelativeToProjects>$(BuildFolderRelativeToProjects)WebApp\</WebAppFolderRelativeToProjects>
<WebBuildFolderWildcard>$(WebAppFolder)**\*.*</WebBuildFolderWildcard>
<WebBuildFolderExclusionWildcard>$(WebAppFolder)**\Web.Template.*;$(WebAppFolder)**\*.pdb</WebBuildFolderExclusionWildcard>
</PropertyGroup>
<Target Name="Build" DependsOnTargets="ZipWebApp">
<Message Text="Build finished" />
</Target>
<Target Name="CleanUp" DependsOnTargets="ZipWebApp">
<Message Text="Deleting $(BuildFolder)" Importance="high" />
<RemoveDir Directories="build\$(BuildFolder)" />
<Message Text="Finished deleting $(BuildFolder)" Importance="high" />
</Target>
<Target Name="ZipWebApp" DependsOnTargets="OffsetTimestamps" >
<Time Format="yyyyMMdd-HHmm">
<Output TaskParameter="FormattedTime" PropertyName="buildDate" />
</Time>
<CreateItem Include="$(WebBuildFolderWildcard)" Exclude="$(WebBuildFolderExclusionWildcard)">
<Output TaskParameter="Include" ItemName="WebFilesToZip" />
</CreateItem>
<CreateItem Include="$(SolutionBinBuildFolderWildcard)" Exclude="$(SolutionBinBuildFolderExclusionWildcard)">
<Output TaskParameter="Include" ItemName="BinFilesToZip" />
</CreateItem>
<Message Text="Starting to zip to $(buildDate)-$(BuildZipFileName)" Importance="high" />
<MSBuild.Community.Tasks.Zip Files="@(BinFilesToZip)" ZipFileName="$(buildDate)-$(BuildZipFileNameBin)" WorkingDirectory="$(SolutionBinFolder)" />
<MSBuild.Community.Tasks.Zip Files="@(WebFilesToZip)" ZipFileName="$(buildDate)-$(BuildZipFileName)" WorkingDirectory="$(WebAppFolder)" />
<Message Text="Finished zipping to build\$(BuildFolder)\$(buildDate)-$(BuildZipFileName)" Importance="high" />
</Target>
<Target Name="CompileProjects">
<Message Text="Compiling web project to build\$(BuildFolder)" Importance="high" />
<!-- For UseWPP_CopyWebApplication=True see http://stackoverflow.com/questions/1983575/copywebapplication-with-web-config-transformations -->
<MSBuild Projects="..\src\umbraco.presentation\umbraco.presentation.csproj" Properties="WarningLevel=0;Configuration=Release;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;OutDir=$(SolutionBinFolderRelativeToProjects);WebProjectOutputDir=$(WebAppFolderRelativeToProjects)" Targets="Clean;Build;" BuildInParallel="False" ToolsVersion="4.0" UnloadProjectsOnCompletion="False">
</MSBuild>
<!--
Now, because of all the circular dependencies we need to build those projects and have them dump their DLLs/assets out to the same folder. Really wish this wasn't the case!
These are: umbraco.editorControls umbraco.webservices umbraco.MacroEngines
Each of these projects has a post build to put their stuff in the correct location based on the solution and unfortunately for us each
of these projects references the web application! So if we specify an OutDir parameter it will also trigger a web deploy and chuck another
website output in bin/_PublishedWebSites folder. we cannot disable this: http://social.msdn.microsoft.com/forums/en-US/tfsbuild/thread/3ec642ad-2e6d-424c-891a-62f6409da62a/
so we need to just build the project 'in-place' then copy its output to the SolutionBinFolder
-->
<Message Text="Compiling MacroEngines project" Importance="high" />
<MSBuild Projects="..\src\umbraco.MacroEngines\umbraco.MacroEngines.csproj" Properties="WarningLevel=0;Configuration=Release;" Targets="Clean;Build;" BuildInParallel="False" ToolsVersion="4.0" UnloadProjectsOnCompletion="False">
</MSBuild>
<ItemGroup>
<MacroEngineDll Include="..\src\umbraco.MacroEngines\bin\Release\umbraco.MacroEngines.dll"/>
</ItemGroup>
<Copy SourceFiles="@(MacroEngineDll)"
DestinationFolder="$(SolutionBinFolder)" OverwriteReadOnlyFiles="True"/>
<Copy SourceFiles="@(MacroEngineDll)"
DestinationFolder="$(WebAppFolder)\bin" OverwriteReadOnlyFiles="True"/>
<Message Text="Compiling editorControls project" Importance="high" />
<MSBuild Projects="..\src\umbraco.editorControls\umbraco.editorControls.csproj" Properties="WarningLevel=0;Configuration=Release;" Targets="Clean;Build;" BuildInParallel="False" ToolsVersion="4.0" UnloadProjectsOnCompletion="False">
</MSBuild>
<ItemGroup>
<EditorControlsDll Include="..\src\umbraco.editorControls\bin\Release\umbraco.editorControls.dll"/>
</ItemGroup>
<Copy SourceFiles="@(EditorControlsDll)"
DestinationFolder="$(SolutionBinFolder)" OverwriteReadOnlyFiles="True"/>
<Copy SourceFiles="@(EditorControlsDll)"
DestinationFolder="$(WebAppFolder)\bin" OverwriteReadOnlyFiles="True"/>
<Message Text="Compiling webservices project" Importance="high" />
<MSBuild Projects="..\src\umbraco.webservices\umbraco.webservices.csproj" Properties="WarningLevel=0;Configuration=Release;" Targets="Clean;Build;" BuildInParallel="False" ToolsVersion="4.0" UnloadProjectsOnCompletion="False">
</MSBuild>
<ItemGroup>
<WebServicesDll Include="..\src\umbraco.webservices\bin\Release\umbraco.webservices.dll"/>
<WebServicesASMX Include="..\src\umbraco.webservices\*.asmx"/>
</ItemGroup>
<Copy SourceFiles="@(WebServicesDll)"
DestinationFolder="$(SolutionBinFolder)" OverwriteReadOnlyFiles="True"/>
<Copy SourceFiles="@(WebServicesDll)"
DestinationFolder="$(WebAppFolder)\bin" OverwriteReadOnlyFiles="True"/>
<Copy SourceFiles="@(WebServicesASMX)"
DestinationFolder="$(WebAppFolder)\umbraco\webservices\api" OverwriteReadOnlyFiles="True"/>
<Message Text="Finished compiling projects" Importance="high" />
</Target>
<Target Name="OffsetTimestamps" DependsOnTargets="CompileProjects">
<CreateItem Include="$(BuildFolder)**\umbraco.*.dll">
<Output TaskParameter="Include" ItemName="FilesToOffsetTimestamp" />
</CreateItem>
<Message Text="Starting to offset timestamps" Importance="high" />
<Umbraco.MSBuild.Tasks.TimestampOffset Files="@(FilesToOffsetTimestamp)" Offset="-11" />
<Message Text="Finished offsetting timestamps" Importance="high" />
</Target>
<Target Name="AfterBuild">
<Message Text="Hi" />
</Target>
</Project>