TFS 2010构建部署C#程序覆盖远程文件及版本号重复问题求助
解决TFS 2010中构建版本号重复的TF42064错误及部署优化方案
嘿,我来帮你搞定这个TFS的问题!首先得先弄明白为啥会出这个TF42064错误——TFS 2010要求同一个构建定义下的每个构建版本号必须是唯一的,你把Build Number Format设成$(BuildDefinitionName),每次构建的版本号都是同一个字符串,自然就触发重复检测报错了。下面分两种情况给你解决方案:
一、TFS 2010临时解决办法(未升级前)
1. 修复版本号重复问题
修改构建定义的版本号格式,加入能保证唯一性的标识,推荐用这个格式:
$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)
$(Date:yyyyMMdd)会生成当前日期的8位数字(比如20240520)$(Rev:.r)是TFS的修订号,同一天内的构建会自动递增(第一次是1,第二次是2,以此类推)
这样每次构建的版本号都会是唯一的,彻底解决TF42064错误。
2. 确保部署时覆盖现有文件
在默认构建模板里找到部署相关的步骤,按以下方式配置:
- 如果用的是
Copy Files任务:勾选Overwrite existing files选项,这样复制时会自动覆盖目标位置的旧文件 - 如果是用命令行执行XCopy命令:在命令里加上
/Y参数,比如:
xcopy "$(BuildOutputPath)\*.exe" "\\RemoteServer\DeploymentFolder\" /Y /E
/Y参数会跳过覆盖确认,直接替换现有文件。
二、升级到TFS 2015+后的优化方案
等你升级到TFS 2015(或更高版本,现在叫Azure DevOps Server)后,能用到更灵活的构建工具,这里给你几个优化建议:
- 版本号格式更简洁:可以用
$(BuildDefinitionName)-$(Date:yyyyMMdd)-$(BuildId),$(BuildId)是TFS自动生成的唯一整数,绝对不会重复,还能快速关联到具体构建记录 - 部署任务更强大:用内置的
Copy Files to Remote Machine任务,直接配置远程服务器地址、认证信息和覆盖选项,不需要手动写复杂的命令行 - 版本归档追溯:把每次构建的可执行文件上传到TFS的工件库(Artifacts),即使覆盖了远程位置的文件,也能随时回溯到历史版本,方便排查问题
内容的提问来源于stack exchange,提问作者rupweb
相关产品推荐
相关产品推荐

