A long time ago a reader sent me a build script and asked for my thoughts on it. This is my response. In this entry I have marked up his build script with my comments inside of tags like:
I thought that you guys might be interested in this too. Here it is.
< Project DefaultTargets = " Build " xmlns = " http://schemas.microsoft.com/developer/msbuild/2003 " >
< UsingTask TaskName = " BuildTasks.MoveUpBuildNumber " AssemblyFile = " BuildTasks\bin\Debug\BuildTasks.dll " />
< UsingTask TaskName = " BuildTasks.ReplaceInFile " AssemblyFile = " BuildTasks\bin\Debug\BuildTasks.dll " />
< UsingTask TaskName = " BuildTasks.CheckInIntoVSS " AssemblyFile = " BuildTasks\bin\Debug\BuildTasks.dll " />
< UsingTask TaskName = " BuildTasks.CheckOutFromVSS " AssemblyFile = " BuildTasks\bin\Debug\BuildTasks.dll " />
< UsingTask TaskName = " BuildTasks.UndoCheckOutFromVSS " AssemblyFile = " BuildTasks\bin\Debug\BuildTasks.dll " />
< UsingTask TaskName = " BuildTasks.GetLatestFromVSS " AssemblyFile = " BuildTasks\bin\Debug\BuildTasks.dll " />
< UsingTask TaskName = " BuildTasks.LabelInVSS " AssemblyFile = " BuildTasks\bin\Debug\BuildTasks.dll " />
< UsingTask TaskName = " BuildTasks.ShowMessageBox " AssemblyFile = " BuildTasks\bin\Debug\BuildTasks.dll " />
< PropertyGroup >
< VSSDatabasePath > \\some\path\here\srcsafe.ini VSSDatabasePath >
PropertyGroup >
< Target Name = " Build " DependsOnTargets = " PrebuildAndRun;CheckInDeliverables " >
Target >
< Target Name = " PrebuildAndRun " >
< Message Text = " building $(MSBuildProjectFile) " Importance = " high " />
< Message Text = " ------ PATCHING FILES WITH BUILD NUMBER " Importance = " high " />
< BuildTasks.CheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/BuildNumberLP.txt "
WorkingDirectory = " LP "
/>
< BuildTasks.CheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/DatabaseScripts/DatabasePackages.sql "
WorkingDirectory = " LP/DatabaseScripts "
/>
< BuildTasks.CheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/AssemblyInfo.cs "
WorkingDirectory = " LP "
/>
< BuildTasks.CheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/Properties/AssemblyInfo.cs "
WorkingDirectory = " LPinstaller/Properties "
/>
< BuildTasks.CheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/Release/LPSetup.msi "
WorkingDirectory = " LPSetup/Release "
/>
< BuildTasks.CheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/Release/setup.exe "
WorkingDirectory = " LPSetup/Release "
/>
< BuildTasks.MoveUpBuildNumber
File = " LP/BuildNumberLP.txt " >
< Output TaskParameter = " BuildNumber " PropertyName = " BuildNumber " />
BuildTasks.MoveUpBuildNumber >
< BuildTasks.ReplaceInFile
SearchString = " PACKAGE_REVISION "
ReplaceString = " $(BuildNumber) "
FileName = " LP/DatabaseScripts/DatabasePackages.sql "
/>
< BuildTasks.ReplaceInFile
SearchString = " 27857 "
ReplaceString = " $(BuildNumber) "
FileName = " LP/AssemblyInfo.cs "
/>
< BuildTasks.ReplaceInFile
SearchString = " 27857 "
ReplaceString = " $(BuildNumber) "
FileName = " LPinstaller/Properties/AssemblyInfo.cs "
/>
< Message Text = " ------ PATCHING FILES WITH BUILD NUMBER... DONE " Importance = " high " />
< Exec Command = " " C:\Program Files\Microsoft Visual Studio 8\Common7\IDE/devenv.com " " .\LP\LP.SLN
" /build " Release " /project ..\LPSetup\LPSetup.vdproj /projectconfig " Release " " />
< OnError ExecuteTargets = " RecoverFromError " />
Target >
< Target Name = " CheckInDeliverables " >
< Message Text = " ------ CHECKING IN CHANGED FILES " Importance = " high " />
< BuildTasks.CheckInIntoVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/LP/BuildNumberLP.txt "
WorkingDirectory = " LP "
/>
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/DatabaseScripts/DatabasePackages.sql "
WorkingDirectory = " LP/DatabaseScripts "
/>
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/LP/AssemblyInfo.cs "
WorkingDirectory = " LP "
/>
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/LPinstaller/Properties/AssemblyInfo.cs "
WorkingDirectory = " LPinstaller/Properties "
/>
< BuildTasks.CheckInIntoVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/Release/LPSetup.msi "
WorkingDirectory = " LPSetup/Release "
/>
< BuildTasks.CheckInIntoVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $/Some/Path/Here/Release/setup.exe "
WorkingDirectory = " LPSetup/Release "
/>
< BuildTasks.LabelInVSS
DatabasePath = " $(VSSDatabasePath) "
FilePathInVSS = " $ "
Label = " Revision $(BuildNumber) "
/>
< Message Text = " ------ CHECKING IN CHANGED FILES... DONE " Importance = " high " />
< OnError ExecuteTargets = " ErrorOnCheckIn " />
Target >
< Target Name = " RecoverFromError " >
< Message Text = " An error has occurred, reversing checkouts " />
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) " IgnoreError = " true "
FilePathInVSS = " $/Some/Path/Here/LP/AssemblyInfo.cs "
WorkingDirectory = " LP "
/>
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) " IgnoreError = " true "
FilePathInVSS = " $/Some/Path/Here/LP/BuildNumberLP.txt "
WorkingDirectory = " LP "
/>
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) " IgnoreError = " true "
FilePathInVSS = " $/Some/Path/Here/DatabaseScripts/DatabasePackages.sql "
WorkingDirectory = " LP/DatabaseScripts "
/>
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) " IgnoreError = " true "
FilePathInVSS = " $/Some/Path/Here/LPinstaller/Properties/AssemblyInfo.cs "
WorkingDirectory = " LPinstaller/Properties "
/>
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) " IgnoreError = " true "
FilePathInVSS = " $/Some/Path/Here/Release/LPSetup.msi "
WorkingDirectory = " LPSetup/Release "
/>
< BuildTasks.UndoCheckOutFromVSS
DatabasePath = " $(VSSDatabasePath) " IgnoreError = " true "
FilePathInVSS = " $/Some/Path/Here/Release/setup.exe "
WorkingDirectory = " LPSetup/Release "
/>
Target >
< Target Name = " ErrorOnCheckIn " >
< BuildTasks.ShowMessageBox Message =
" Build process failed to check in the files for the new build or reverse checkouts.
Make sure that all files are checked in and retry the build. " />
Target >
Project >
Sayed Ibrahim Hashimi
Comments are closed.