2009-11-11 46 views
2

作爲我的TFS(2008)構建的一部分,我想手動將ASP.NET MVC項目的二進制文件和視圖複製到許多不同的位置。所有現有的二進制文件和視圖都已成功複製。不幸的是,任何新添加的視圖在第一次構建時都會被忽略。如果我然後開始另一個構建,它們被包括在內。在TFSBuild.proj中複製目標的問題

下面是我對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」還是他們的更好的目標名稱?

回答

4

我自己設法解決了這個問題(只是詢問問題並組織我自己的想法非常有幫助!)。我懷疑檔案清單過早建立是正確的。通過將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>