2015-08-26 2 views
3

Проект Visual Studio имеет папку, содержащую скрипты sql, и все файлы в ней должны иметь действие сборки, установленное для Embedded Resource. При добавлении новых файлов разработчики часто забывают изменить действие сборки.Принудительные файлы в папке имеют build action = Embedded Resource с целевыми файлами

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

Я видел нечто подобное, сделанное ранее.

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="12.0" 
     DefaultTargets="Build" 
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="MakeSureSqlFilesAreSetToCopyAlways" BeforeTargets="PrepareForBuild"> 
    <Error Condition="!('%(Content.CopyToOutputDirectory)' == 'Always')" 
      Text="This Content file is not configured to Copy Always: [%(Content.FullPath)]" /> 
    </Target> 
</Project> 

Этот блок кода проверяет, установлены ли файлы для копирования всегда. Как проверить действие сборки?

Поблагодарили бы за какие-нибудь ссылки для дальнейшего чтения по этой теме.

Заранее спасибо.

ответ

2

Если предположить, что файлы сценариев находятся в папке Scripts, следующий целевой файл вызовет ошибку, если есть какой-либо файл с построением действия установлено Content и если их путь содержит слово Scripts.

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="12.0" 
     DefaultTargets="Build" 
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="MakeSureSqlFilesAreSetToEmbeddedAsResource" BeforeTargets="PrepareForBuild"> 
    <Error Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('%(Content.FullPath)', 'Scripts'))" 
      Text="This Content file is not configured as Embedded Resource: [%(Content.FullPath)]" /> 
    </Target> 
</Project> 

Если вы имеете дело с разработчиками, которые забывают устанавливать свои скрипты Внедренный ресурс, выше должно быть достаточно (хотя не является исчерпывающим), в основном потому, что Visual Studio устанавливает действие сборки для новых файлов Content по умолчанию , Если вы хотите сделать это пуленепробиваемым, просто повторите тег Error и замените Content со всеми возможными действиями сборки (кроме EmbeddedResource).