문제

내 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"를 사용해야합니까, 아니면 더 나은 대상 이름입니까?

도움이 되었습니까?

해결책

나는 이것을 직접 해결할 수있었습니다 (질문을하고 내 생각을 조직하는 것은 매우 도움이되었습니다!). 파일 목록이 너무 빨리 구축되고 있다는 의심이 정확했습니다. 항목 그룹을 대상 요소 내에 배치하면 평가 시점을 지정할 수 있습니다.

수정 된 스 니펫은 다음과 같습니다.

<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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top