TFSBuild.proj从源代码控制获取后导入常见目标

时间:2015-03-16 16:28:54

标签: tfs msbuild tfs2010 tfsbuild target

我目前正在重写/清理我们的TFS Builds,我注意到我们有很多重复。我想创建一个" Common.targets"然后导入我们所有tfs构建的文件(大约30个)。

我尝试过以下几点:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" />
  <Import Project="$(MSBuildExtensionsPath)\Microsoft.Sdc.Common.Tasks"/>
  <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

  <Import Project="$(BuildDefinition).proj"/>

  <PropertyGroup>
    <ProjectName>Felix.LincsPublishingHandlers</ProjectName>
  </PropertyGroup>

  <Import Project="$(BuildDirectory)/src/BuildScripts/Common/CommonTargets.targets"/>

</Project>

其中:

  • $(BuildDefinition).proj - &gt;包含项目/环境特定属性(例如数据库连接字符串,IP地址)
  • CommonTargets.targets - &gt;用于所有各种项目。在构建定义中定义&gt;来源设置

但是,当我尝试在TFS Build代理上运行时(版本2010,如果有人需要知道),它会尝试在复制源文件之前运行语句。所以我收到一个错误,说CommonTargets.targets文件不存在。

我已经浏览过网络了,到目前为止我遇到的解决方案都提出了我不愿意使用的建议:

  • 将Common.targets文件复制到具有TFSBuild.proj文件的同一文件夹中
    • 我在不同的文件夹中有20多个版本
    • 我希望他们都使用一个common.targets文件(不是同一个文件的20个副本)
  • 将Common.targets文件复制到TFS Build Agent可以访问的构建服务器上的某个位置
    • 我希望在源代码控制中使用其余的构建脚本和代码。
    • 当我们正在进行某种迁移项目时,Common.targets会随着时间的推移而改变一点,所以最好有源代码控制

是否遇到过尝试导入保存在TFS源代码管理中的Common.targets文件的类似问题?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

首先,您应该考虑升级TFS,因为TFS 2010的主流支持将在几个月后结束。

http://nakedalm.com/its-that-time-again-get-ready-to-upgrade-to-tfs-2015/

其次,您应该考虑更新构建系统以使用现代方法。使用TFS 2013模板和PowerShell。