如何在缺少内容文件时使MSBuild失败

时间:2009-06-22 15:31:36

标签: visual-studio-2008 msbuild cruisecontrol.net

我注意到,当内容文件丢失时,我们的巡航控制服务器不会使构建失败。

我想在缺少javascript /图形文件等时使构建失败。如何使用从svn中提取的文件来验证项目文件?

2 个答案:

答案 0 :(得分:19)

您可以创建要检查的目标,以确保所有内容文件都物理位于磁盘上,如果不是这样,则会引发错误。这是一个目标

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

通过将此目标添加到Project元素的InitialTargets属性,可以确保每次都执行此目标。例如

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

Sayed Ibrahim Hashimi

我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

答案 1 :(得分:1)

您还可以在.csproj中的 BeforeBuild 目标中添加错误条件,如下所示:

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

BeforeBuild 将始终在构建项目时执行,因此您不需要将目标添加到Project属性的InitialTargets属性。