2011-03-30 48 views
2

经过特定的编译后,我想运行一个具有TF.exe命令的批处理文件,它执行以下操作: 检出DLL 将其中一个“新建的dll”检查出DLL的顶部, 然后检查它回来。从TFS 2010运行批处理文件build

我试着设置一个InvokeProcess构建活动来运行该批处理文件,但它尝试执行该批处理文件时会收到权限错误。

我意识到我可以也可能应该使用PowerShell做到这一点,但是,我不想现在就签下令人头疼的问题。 有关正确执行此操作的任何建议?

+0

您正在获取的权限错误是什么? – Jehan33 2011-03-30 06:13:34

回答

3

可能要为此答案获取doink,但不应将构建的DLL检入到源存储库中,因为您无法对其进行版本化。没有“三角洲”操作。

说了这么多,我可以想到的一些方法至少可以让你朝着你所看到的方向发展。一个PostBuild复制步骤是一个选项(注意:当你使用这种类型的选项时,所有用户必须将DLL放在与你相同的相对位置上,但你已经咀嚼了该咬合的可能性)。

您必须通过另一个进程来处理签出和签入,但服务或PowerShell都可能是一个选项(尽管您不需要头疼)。

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

+0

您可以使用http://geekswithblogs.net/michelotti/archive/2010/05/15/version-assemblies-with-tfs-2010-continuous-integration.aspx版本程序集 – jonperl 2011-03-31 01:46:55

+0

不完全是我所关注的,尽管它在抓住正确版本的问题上是一个有趣的事情。我更关注这样一个事实,即大多数将程序集加载到他们的TFS存储库的企业只是简单地创造一个最新的地方。由于您没有从源代码那里获得编译源代码的增量,如果您所做的只是存储最新代码,那么最终会浪费大量空间。 – 2011-04-05 19:33:00

+1

虽然二进制三角洲确实没什么用处,但有一种思想流派主张将源代码管理中的所有东西都放在一起,这样您就可以一站式购买与单个发布版本相关的所有内容。这不是疯狂的,不应该气馁。 – 2012-11-06 15:19:43

3

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