Проблемы с копированием цели в TFSBuild.proj
Вопрос
В рамках моей сборки TFS (2008) я хочу вручную скопировать двоичные файлы и представления проекта ASP.NET MVC в несколько разных мест.Все существующие двоичные файлы и представления успешно копируются.Однако, к сожалению, любые вновь добавленные представления игнорируются во время их первой сборки.Если я затем запущу еще одну сборку, они включатся.
Вот фрагмент дополнений, которые я внес в TFSBuild.proj...
<ItemGroup>
<BinaryFiles Include="$(BinariesRoot)\Debug\_PublishedWebsites\SiteName\bin\*.*" />
<ViewFiles Include="$(BinariesRoot)\Debug\_PublishedWebsites\SiteName\Views\**\*.aspx" />
<ViewFiles Include="$(BinariesRoot)\Debug\_PublishedWebsites\SiteName\Views\**\*.ascx" />
</ItemGroup>
<Target Name="AfterDropBuild">
<Message Text="Starting deployment copy..." />
<Copy SourceFiles="@(BinaryFiles)" DestinationFolder="T:\BuildWebSiteHosting\WebSite\bin\" ContinueOnError="false" />
<Copy SourceFiles="@(ViewFiles)" DestinationFolder="T:\BuildWebSiteHosting\WebSite\Views\%(RecursiveDir)" ContinueOnError="false" />
<Message Text="Deployment copy completed." />
</Target>
Подозреваю, что список файлов для копирования формируется слишком рано.Должен ли я использовать «AfterDropBuild» или это лучшее целевое имя?
Решение
Мне удалось решить эту задачу самому (было очень полезно просто задать вопрос и организовать свои мысли!).Мои подозрения, что списки файлов создавались слишком рано, оправдались.Поместив ItemGroup внутри элемента Target, вы можете указать, когда он будет оцениваться.
Исправленный фрагмент:
<Target Name="AfterDropBuild">
<ItemGroup>
<BinaryFiles Include="$(BinariesRoot)\Debug\_PublishedWebsites\SiteName\bin\*.*" />
<ViewFiles Include="$(BinariesRoot)\Debug\_PublishedWebsites\SiteName\Views\**\*.aspx" />
<ViewFiles Include="$(BinariesRoot)\Debug\_PublishedWebsites\SiteName\Views\**\*.ascx" />
</ItemGroup>
<Message Text="Starting deployment copy..." />
<Copy SourceFiles="@(BinaryFiles)" DestinationFolder="T:\BuildWebSiteHosting\WebSite\bin\" ContinueOnError="false" />
<Copy SourceFiles="@(ViewFiles)" DestinationFolder="T:\BuildWebSiteHosting\WebSite\Views\%(RecursiveDir)" ContinueOnError="false" />
<Message Text="Deployment copy completed." />
</Target>