从TFS执行get-latest时,所有时间戳都设置为执行get操作的时间。在运行msdeploy以执行同步时,会将源中的时间戳与目标服务器上的时间戳进行比较。当然,这意味着使用TFS + msdeploy,每次构建后都会将每个文件推送到目标服务器,除非
如果构建定义设置为执行Clean构建,或者如果要使用多个构建代理,那么这将不再有效。
这个主题一直出现,每隔几年我会抛出新的行,以防万一有变化。这可以通过几种不同的方式解决:
我从来不知道去哪里搜索这些东西,因为这两个团队都非常不透明 - 特别是webdeploy团队。这是一个已经解决的问题吗?
答案 0 :(得分:0)
TFS和Visual Studio团队完全透明,您可以通过http://visualstudio.uservoice.com提交功能请求,并通过http://connect.microsoft.com提交错误。
但是,服务器工作空间中的所有文件都设置为服务器上次修改文件的日期。本地工作空间物理地将文件内容与确定更改进行比较。您可以在工作区属性中从本地工作区更改为服务器工作区。
答案 1 :(得分:0)
最后,我们通过编写一个powershell脚本来包装Web Publishing Pipeline生成的.cmd
文件,并在调用{{1}的命令中传递-useChecksum
标志来解决这个问题。脚本。由于WPP创建的样板.cmd
允许将其他参数传递给msdeploy,因此我们可以使用如下所示的行来完成此操作。
.cmd
这样,即使TFS正在创建时间戳设置为get-latest时间的工作空间,现在也指示msdeploy使用校验和。