Pergunta

Como parte do meu TFS (2008) Build, quero copiar manualmente os binários e as visualizações de um projeto ASP.NET MVC para vários locais diferentes. Todos os binários e visões existentes são copiados com sucesso. Infelizmente, no entanto, todas as visualizações recém -adicionadas são ignoradas durante sua primeira construção. Se eu começar outra compilação, eles serão incluídos.

Aqui está um trecho das adições que fiz ao 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>

Suspeito que a lista de arquivos para copiar esteja sendo construída muito cedo. Devo estar usando "AfterDropBuild" ou é um nome de destino melhor?

Foi útil?

Solução

Consegui resolver este eu mesmo (foi muito útil apenas fazer a pergunta e organizar meus próprios pensamentos!). Minhas suspeitas de que as listas de arquivos estavam sendo construídas muito logo estavam corretas. Colocando o grupo Item dentro do elemento de destino, você pode especificar quando ele é avaliado.

O trecho corrigido é:

<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top