Как завершить работу MSBuild при отсутствии файлов содержимого - PullRequest
15 голосов
/ 22 июня 2009

Я заметил, что наш сервер круиз-контроля не завершает сборку, когда отсутствуют файлы содержимого.

Я хотел бы прервать сборку, если отсутствуют файлы javascript / graphics и т.д. Как я могу проверить файл проекта с файлами, извлеченными из SVN?

Ответы [ 2 ]

19 голосов
/ 22 июня 2009

Вы можете создать цель для проверки того, что все файлы содержимого физически находятся на диске, и вызвать ошибку, если это не так. Вот такая вот цель

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

Вы можете убедиться, что эта цель выполняется каждый раз, добавив ее в атрибут InitialTargets элемента Project. Например

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

Сайед Ибрагим Хашими

Моя книга: Внутри Microsoft Build Engine: Использование MSBuild и Team Foundation Build

1 голос
/ 21 июля 2016

Вы также можете добавить условие ошибки в BeforeBuild Цель доступна в .csproj, например:

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

BeforeBuild всегда будет выполняться при построении проекта, поэтому вам не требуется добавлять цель в атрибут InitialTargets свойства Project.

...