У меня странная проблема с тем, как msbuild ведет себя с проектом веб-развертывания VS2008, и хотел бы знать, почему он случайно ведет себя неправильно.
Мне нужно удалить несколько файлов из папки развертывания, которые должны существовать только в моей среде разработки. Файлы были сгенерированы веб-приложением во время разработки / тестирования и не включены в мой проект / решение Visual Studio.
Я использую следующую конфигурацию:
<!-- Partial extract from Microsoft Visual Studio 2008 Web Deployment Project -->
<ItemGroup>
<DeleteAfterBuild Include="$(OutputPath)data\errors\*.xml" /> <!-- Folder 1: 36 files -->
<DeleteAfterBuild Include="$(OutputPath)data\logos\*.*" /> <!-- Folder 2: 2 files -->
<DeleteAfterBuild Include="$(OutputPath)banners\*.*" /> <!-- Folder 3: 1 file -->
</ItemGroup>
<Target Name="AfterBuild">
<Message Text="------ AfterBuild process starting ------" Importance="high" />
<Delete Files="@(DeleteAfterBuild)">
<Output TaskParameter="DeletedFiles" PropertyName="deleted" />
</Delete>
<Message Text="DELETED FILES: $(deleted)" Importance="high" />
<Message Text="------ AfterBuild process complete ------" Importance="high" />
</Target>
Проблема, с которой я столкнулся, заключается в том, что когда я выполняю сборку / перестройку проекта веб-развертывания, он «иногда» удаляет все файлы, но в других случаях ничего не удаляет! Или он удалит только одну или две из трех папок в группе элементов DeleteAfterBuild. Кажется, нет никакой согласованности в том, когда процесс сборки решает удалить файлы или нет.
Когда я отредактировал конфигурацию, включив в нее только папку 1 (например), он удаляет все файлы правильно. Затем, добавив папки 2 и 3, он начинает удалять все файлы, как я хочу. Затем, по-видимому, в случайное время я пересоберу проект, и он не удалит ни один из файлов!
Я пытался переместить эти элементы в группу элементов ExcludeFromBuild (что, вероятно, там, где и должно быть), но это дает мне тот же непредсказуемый результат.
Кто-нибудь испытывал это? Я делаю что-то неправильно? Почему это происходит?