tfs - TFSBuild.proj 中复制目标的问题

标签 tfs msbuild tfsbuild

作为 TFS (2008) 构建的一部分,我想手动将 ASP.NET MVC 项目的二进制文件和 View 复制到多个不同的位置。所有现有的二进制文件和 View 均已成功复制。然而不幸的是,任何新添加的 View 在第一次构建期间都会被忽略。如果我随后开始另一个构建,它们就会被包含在内。

这是我对 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”还是它们是更好的目标名称?

最佳答案

我自己设法解决了这个问题(仅仅提出问题并组织我自己的想法就非常有帮助!)。我对文件列表构建得太快的怀疑是正确的。通过将 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>

关于tfs - TFSBuild.proj 中复制目标的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1718382/

相关文章:

jenkins - 通过MSDeploy.exe进行Web部署

WiX:构建服务器构建中神秘且难以诊断的 ICE 验证错误

c# - Entity Framework 不将元数据嵌入到 dll 中

asp.net - VS 2015 和 msbuild 抑制 typescript 错误

nunit - 如何将NUnit测试集成到TFS 2010版本中

powershell - 从TFSBuild.Proj文件运行Powershell脚本

tfs - 无法获得排队到 Controller 的 Visual Studio 2013 负载测试

tfs - 从 TFS 2013 更新 5 升级到 TFS 2018

TFS Power Tools 2008 Powershell Snapin 无法在 Windows 2008 R2 的 64 位系统中运行

tfs - TFS 2017.2 中未包含在工作详细信息中的错误的剩余工作