15

I've noticed that our cruise control server does not fail the build when content files are missing.

I'd like to fail the build when javascript / graphics files etc are missing. How can I go about validating the project file with the files pulled from svn?

skolima
  • 31,963
  • 27
  • 115
  • 151
ilivewithian
  • 19,476
  • 19
  • 103
  • 165

2 Answers2

21

You can create a target to check to make sure that all Content files are physically located on disk and raise an error if this is not the case. Here is such a target

<Target Name="ValidateContentFiles">
  <Error Condition="!Exists(%(Content.FullPath))" 
         Text="Missing Content file [%(Content.FullPath)]"/>
</Target>

You can make sure that this target is executed everytime by adding it to the InitialTargets attribute on the Project element. For example

<Project InitialTargets="ValidateContentFiles"
         ToolsVersion="3.5" DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

Sayed Ibrahim Hashimi

My Book: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

Sayed Ibrahim Hashimi
  • 43,864
  • 17
  • 144
  • 178
3

You can also add the error condition in BeforeBuild Target available in .csproj like this:

<Target Name="BeforeBuild">
<Error Condition="!Exists(%(Content.FullPath))"
Text="Missing Content file [%(Content.FullPath)]"/>
</Target>

BeforeBuild will always execute when building a project and so you do not require adding the target to InitialTargets attribute of the Project property.

Jay Sharma
  • 31
  • 1
  • 1