【问题标题】:run a batch file from TFS 2010 build从 TFS 2010 构建运行批处理文件
【发布时间】:2011-07-25 18:16:28
【问题描述】:

在特定构建之后,我想运行一个批处理文件,其中包含执行以下操作的 TF.exe 命令: 检查一个 DLL 将“新构建的 dll”之一复制到已检出的 DLL 之上, 然后重新检查。

我尝试设置 InvokeProcess 构建活动来运行批处理文件,但在尝试执行批处理文件时出现权限错误。

我意识到我可以并且可能应该使用 PowerShell 来执行此操作,但是,我现在不想为签名而头疼。 有关正确执行此操作的任何建议?

【问题讨论】:

  • 您遇到的权限错误是什么?

标签: tfs msbuild permissions build-automation


【解决方案1】:

可能会为这个答案获得doink,但您不应该将构建的DLL签入源存储库,因为您无法对它们进行版本控制。没有“delta”操作。

话虽如此,但我能想到的几种方法至少可以让你朝着你正在寻找的方向前进。一个用于复制的 PostBuild 步骤是一个选项(注意:当您使用这种类型的选项时,所有用户都必须将 DLL 放在与您相同的相对位置,但您很可能已经咬掉了这一点)。

您将不得不通过另一个进程处理签出和签入,但服务或 PowerShell 都可能是一种选择(尽管您不想头疼)。

已经有一段时间了,但使用某种类型的 CI 方法可能是另一种探索的选择。 MS 现在在 TFS 中提供了 CI,但还有其他选项,例如 Cruise Control .NET。

【讨论】:

  • 您可以使用geekswithblogs.net/michelotti/archive/2010/05/15/…对程序集进行版本控制
  • 不完全是我所关注的,尽管在获取正确版本的问题上这是一个有趣的观点。我更关注这样一个事实,即大多数将程序集加载到其 TFS 存储库中的企业只是为获取最新信息提供了一个场所。由于您没有从编译的源代码(如源代码)中获取增量,因此如果您所做的只是存储最新的,您最终会浪费大量空间。
  • 虽然二进制增量确实没用,但有一种观点主张将几乎所有内容置于源代码控制之下,这样您就可以一站式购买与单个发布版本相关的所有内容。这并不疯狂,也不应该气馁。
【解决方案2】:

我不明白为什么您不能简单地从 MSBuild 执行批处理文件中的操作。例如,可以通过从 MSBuild Extension Pack 执行 TfsSource 任务从 TFS 签出和签入项目。

【讨论】:

    【解决方案3】:

    您还可以通过为签出和签入创建自定义活动并使用调用流程来复制 Dll 来做到这一点。 检查此链接以查看 Checkout、Checkin 自定义活动:http://www.ewaldhofman.nl/post/2010/05/13/Customize-Team-Build-2010-e28093-Part-5-Increase-AssemblyVersion.aspx

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 2012-12-18
      • 2011-10-29
      • 2012-08-07
      • 2011-02-07
      相关资源
      最近更新 更多