Проблемы с копией цели в TFSBuild.proj - PullRequest
2 голосов
/ 12 ноября 2009

Как часть моей сборки 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" или это лучшее целевое имя?

1 Ответ

4 голосов
/ 12 ноября 2009

Мне удалось решить это самому (было очень полезно просто задать вопрос и организовать свои мысли!). Мои подозрения, что списки файлов создавались слишком рано, были правильными. Поместив 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>
...