作为我的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“还是他们是更好的目标名称?
发布于 2009-11-12 08:08:03
我自己设法解决了这个问题(提出问题并组织自己的想法是非常有帮助的!)。我怀疑文件列表构建得太快是正确的。通过将ItemGroup放在目标元素中,您可以指定何时对其求值。
更正后的代码片段为:
<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>https://stackoverflow.com/questions/1718382
复制相似问题