-->

tf.exe上tfspreview(tf.exe on tfspreview)

2019-06-26 15:44发布

我需要在tfspreview的ChangeSetId为我们的持续集成。 我只需要这一个数字而已。 我想,我能找到的所有可能的MSBuild任务,但总是有另一个较小的问题阻止我。

对于MSBuild.ExtensionPack.Tfs.TeamBuild我得到:

Could not load file or assembly 'Microsoft.TeamFoundation.Client, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

TfsClient -task社区包(这是产生以下EXEC: tf.exe history . /StopAfter:1 /noprompt /format:detailed /recursive ),我得到:

The specified task executable could not be run. The system cannot find the file specified

我的问题是; 是否有可能执行TF.exe tfspreview服务器上? 或者,我可以得到大会Microsoft.TeamFoundation.Client生成服务器上执行的这两个任务之一?

Answer 1:

好吧,我在这里要告诉你,这是可能的,而无需编写自己的自定义任务,使用API​​,等等......还有一些文章在这里StackOverflow上,但与解决方案的人似乎没有2010年的TFS工作我刚花了一整天敲我的头撞在墙上:d

  1. 您需要安装的MSBuild社区任务。 确保你从这里获取最新版本: https://github.com/loresoft/msbuildtasks 。 最新看起来已经被更新,并针对TFS 2010组件重建。

  2. 你要使用MSBuild.Community.Tasks.Tfs.TfsClient任务。 你得到有关无法运行可执行文件,错误的原因是因为这是一个MSBuild ToolTask​​,你需要在路径传递到可执行文件属性(刀具路径)的任务。

  3. 该TfsClient任务仅仅是tf.exe的包装和任务缺少很多功能可能在一个MSBuild-Y方式处理的开关。 (与此任务的文档是不存在的 - 我不得不看代码),幸运的是,我想通了,你可以进入所有的命令行开关为命令本身的一部分。

  4. 因此,最终的通话将是这个样子?

     <MSBuild.Community.Tasks.Tfs.TfsClient ToolPath="$(PathToTfTool)" Command="history /collection:$(TfsProjectCollectionUrl) /stopafter:1 /version:T /format:detailed $(VersionControlPathForBuildWorkspace)" Recursive="true" > 

     <Message Text="TFS ChangeSetNumber: $(ChangesetNumber)" /> 

而经过22苦不堪言构建失败或没有数据,我终于...... TFS ChangeSetNumber构建:41

YAHOO!

得到了马丁·伍德沃德命令: http://www.woodwardweb.com/vsts/determining_the.html确保您使用的/详细开关或它不会退还变更集。 我不得不看任务的代码,并弄清楚它是如何解析来自tf.exe输出摸不着头脑。

代码TfsClient是在这里供参考: https://github.com/loresoft/msbuildtasks/blob/master/Source/MSBuild.Community.Tasks/Tfs/TfsClient.cs



Answer 2:

下面是代码为我工作..几个小时,尝试几次后,就行了。 不同的是,我内所创建的输出TaskParameter元件

哪里:

  • 刀具路径= “C:\ Program Files文件(x86)的\微软的Visual Studio 11.0 \ Common7 \ IDE” - 如果你在32位或64位而定。

  • $ /在我的工作空间的路径WorkspacePath名,您可以查看此使用TF工作区命令

     <MSBuild.Community.Tasks.Tfs.TfsClient ToolPath="C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE" Command="history /s:http://tfsserver01:8080/tfs/collectionname /stopafter:1 /version:T /format:detailed $/WorkspacePath" Recursive="true" > <Output TaskParameter="Changeset" PropertyName="ChangesetNumber"/> </MSBuild.Community.Tasks.Tfs.TfsClient> <Message Text="TFS ChangeSetNumber: $(ChangesetNumber)" /> 

但由于此线程



Answer 3:

究竟该MSBUILD的工作流程是什么样的? 你通过这个参数为MSBUILD或一些自定义组件,而MSBUILD运行抓住这一信息?

我遇到的类InformationNodeConverters ,它具有方法GetAssociatedChangesets是发生在一个IBuildDetail并返回一个列表IChangesetSummary 。 这也将要求你到MSBuild任务之前,你的变更已关联。 我需要核对我的TFSPreview比如今晚,看看我是否可以编辑生成的模板,但我怀疑,你应该能够使用这样的事情。



文章来源: tf.exe on tfspreview