In a previous post, I provided a walkthrough for automating builds for VSEWSS 1.3 projects. The script I used was based on the SharePoint Guidance Drop 11, and after using it, I felt it could be simplified. I’m a proponent of implementing the “simplest possible thing that will work,” and the following build script contains the minimal functionality needed to automate the building and packaging of your SharePoint solutions.
<?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" /> <ProjectExtensions> <ProjectFileVersion>2</ProjectFileVersion> </ProjectExtensions> <PropertyGroup> <RunTest>false</RunTest> <RunCodeAnalysis>Never</RunCodeAnalysis> <SkipWorkItemCreation>true</SkipWorkItemCreation> </PropertyGroup> <PropertyGroup> <ContosoSolutionDir>c:\NightlyBuild\main\</ContosoSolutionDir> <ContosoSolutionName>Contoso.sln</ContosoSolutionName> <ContosoWSPName>Contoso.Deployment.wsp</ContosoWSPName> <ContosoDeploymentProjDir>c:\NightlyBuild\main\Contoso.Deployment\</ContosoDeploymentProjDir> <IDEPath>C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\</IDEPath> </PropertyGroup> <ItemGroup> <SolutionToBuild Include="$(BuildProjectFolderPath)/../../main/Contoso.sln"> </SolutionToBuild> </ItemGroup> <ItemGroup> <ConfigurationToBuild Include="Debug|Any CPU"> <FlavorToBuild>Debug</FlavorToBuild> <PlatformToBuild>Any CPU</PlatformToBuild> </ConfigurationToBuild> </ItemGroup> <Target Name="AfterCompile"> <!-- The extensions modify files in the pkg directory, so those files cannot read only--> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Message="Making the pkg directory editable."> <Output TaskParameter="Id" PropertyName="StepId" /> </BuildStep> <Exec Command="attrib -R "$(ContosoDeploymentProjDir)pkg\*.*" /S /D" /> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(StepId)" Status="Succeeded" /> <!-- Build using /package switch --> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Message="Packaging wsp."> <Output TaskParameter="Id" PropertyName="StepId" /> </BuildStep> <Exec Command=""$(IDEPath)devenv" "$(ContosoSolutionDir)$(ContosoSolutionName)" /Deploy debug /Package" /> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(StepId)" Status="Succeeded" /> <!-- Copy package to drop folder --> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Message="Copying wsp to drop folder."> <Output TaskParameter="Id" PropertyName="StepId" /> </BuildStep> <Copy SourceFiles="$(ContosoDeploymentProjDir)bin\debug\$(ContosoWSPName)" DestinationFolder="$(DropLocation)\$(BuildNumber)" /> <Copy SourceFiles="$(ContosoDeploymentProjDir)bin\debug\setup.bat" DestinationFolder="$(DropLocation)\$(BuildNumber)" /> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(StepId)" Status="Succeeded" /> </Target> </Project>