.net 使用MSBuild部署额外文件

.net 使用MSBuild部署额外文件,.net,visual-studio-2010,deployment,msbuild,teamcity,.net,Visual Studio 2010,Deployment,Msbuild,Teamcity,我们正在使用Teamcity、Git和MSBuild部署我们的网站 我们的网站运行Sitecore CMS。它需要在根目录中,而不是虚拟目录中 我不想将所有数百个与Sitecore相关的文件都包含到我们的代码存储库中,因为它们永远不会更改。我可以在站点部署后将它们复制到xcopy中,但这会给每个构建增加一分钟的时间,而且效率似乎很低 有没有更好的方法来实现这一点 你可以看看。它检查以前构建的组件是否仍然是最新的,因此不需要重建或与部署服务器同步。它只重新构建已更改的文件。但是,如果生成计算机发生

我们正在使用Teamcity、Git和MSBuild部署我们的网站

我们的网站运行Sitecore CMS。它需要在根目录中,而不是虚拟目录中

我不想将所有数百个与Sitecore相关的文件都包含到我们的代码存储库中,因为它们永远不会更改。我可以在站点部署后将它们复制到xcopy中,但这会给每个构建增加一分钟的时间,而且效率似乎很低

有没有更好的方法来实现这一点

你可以看看。它检查以前构建的组件是否仍然是最新的,因此不需要重建或与部署服务器同步。它只重新构建已更改的文件。但是,如果生成计算机发生更改,或者在编译之前清理了生成,则时间戳可能会导致问题

如果您的文件内容没有更改,但是当您从源代码管理下拉代码,并且文件的时间戳设置为生成开始时生成计算机的当前时间,那么您可以考虑将SHA哈希代码应用于部署的文件和生成文件


由于SHA哈希代码不查看时间戳,因此它将允许您仅复制具有文件内容更改的文件。

您可以使用MSBuild“增量”复制文件。它被称为。MSBuild将输入文件的日期时间戳与输出的日期时间戳进行比较,如果某些输入的日期时间>输出日期时间,则将执行目标或任务

检查日期戳的唯一问题是,如果源被拉到以前从未运行过部署的机器上(即自动化构建服务器)。时间戳可能并不表示文件已更改,因为所有时间戳都将设置为当前日期和时间。