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"를 사용해야합니까, 아니면 더 나은 대상 이름입니까?
해결책
나는 이것을 직접 해결할 수있었습니다 (질문을하고 내 생각을 조직하는 것은 매우 도움이되었습니다!). 파일 목록이 너무 빨리 구축되고 있다는 의심이 정확했습니다. 항목 그룹을 대상 요소 내에 배치하면 평가 시점을 지정할 수 있습니다.
수정 된 스 니펫은 다음과 같습니다.
<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>
제휴하지 않습니다 StackOverflow