Tfs 我应该在哪里存储团队构建的通用目标?

Tfs 我应该在哪里存储团队构建的通用目标?,tfs,msbuild,tfsbuild,targets,Tfs,Msbuild,Tfsbuild,Targets,我正在尝试设置一个common.targets文件,其中包含一些我希望在团队构建中使用的常见msbuild目标,并因此导入到我的TFSBuild.proj文件中。我想知道实现这一目标的最佳方式是什么?我是否需要将common.targets存储在每个TFSBuild.proj文件的旁边,从而为每个团队构建提供目标文件的副本,还是有其他方法?我不希望将目标文件放在每台生成机器上。通用.targets文件的目标是减少脚本的重复。如果您有此文件的多个副本受源代码管理,那么当您需要更改它们(可能是为了更

我正在尝试设置一个common.targets文件,其中包含一些我希望在团队构建中使用的常见msbuild目标,并因此导入到我的TFSBuild.proj文件中。我想知道实现这一目标的最佳方式是什么?我是否需要将common.targets存储在每个TFSBuild.proj文件的旁边,从而为每个团队构建提供目标文件的副本,还是有其他方法?我不希望将目标文件放在每台生成机器上。

通用.targets文件的目标是减少脚本的重复。如果您有此文件的多个副本受源代码管理,那么当您需要更改它们(可能是为了更新.exe路径)时会发生什么情况?就我个人而言,我更喜欢为任何/所有其他构建脚本都可以引用的公共文件指定一个单独的位置。唯一的缺点是,您可能会对该文件的路径进行硬编码。

您可以将它们与MS目标一起存储在$Volume\Program Files\MSBuild中。这样做的好处是,您可以使用内置的已知元数据“$(MSBuildExtensionsPath)\path\To\Your\Targets”

在调用TFSBuild.proj之前,Team Build有一个引导程序阶段,在该阶段中,从源代码管理下载同一目录中的TFSBuild.proj和其他文件。 因此,如果希望目标文件受源代码管理,则需要将其放置在与TFSBuild.proj相同的位置

我从未尝试过,但您可以将目标文件放在网络共享上,并使用unc共享导入它。差不多

<Import Project="\\anothermachine\share\something.targets"/>


但这需要构建帐户和所有运行桌面构建的人都可以访问该网络共享。

将其放在源代码管理中您喜欢的公共位置。在使用目标之前,请按照以下方式从TFSBuild.proj文件获取:

<PropertyGroup>
  <!--Path to the TFS Command Line (used for checkin and out)-->
  <TxTf>&quot;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf&quot;</TxTf>

  <WorkingDirectory>C:\YourPathHere<WorkingDirectory>
  <CustomProjTFSDir>&quot;$/YourProj/YourCustomProjPath&quot;</CustomProjTFSDir>
</PropertyGroup>

<Exec WorkingDirectory="$(WorkingDirectory)"
      Command="$(TxTf) get $(CustomProjTFSDir)"/>

“C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf”
C:\YourPathHere
“$/YourProj/YourCustomProjPath”
这项工作的关键是为构建代理用户设置一个指向自定义内容的工作区。此目录不应与正常生成位于同一空间中


瓦卡诺

这里有一些很好的答案。你为什么不评论他们为什么不工作或者不接受一个……你是对的。这样做了。感谢您的回答。(+1)我不知道MSBuildExtensionPath,根据文档,“它是放置自定义目标文件的有用位置。”您将Exec调用放在哪里?如果我将其放在目标中,则首先尝试导入,但导入失败。如果我试着把它直接放在根下,我会得到一个错误。在尝试导入文件之前,我如何对其执行Get操作?@Elezar-5年前,我本可以回答你的问题。我已经很长时间没有对MS Build做太多的工作了。我现在不记得了。对不起,好吧,考虑到这个答案有多老,我觉得这是一个很难的答案。不过,感谢您的回复!