MSBuild extensionpack将目录的所有内容复制到另一个目录

时间:2011-01-27 21:05:38

标签: msbuild msbuildextensionpack

我正在使用MSBuild扩展包。我想将构建目录的全部内容复制到文件系统上的另一个目录中。我不想重命名目标目录,只需替换内容。可能是我对msbuild扩展包的不熟悉,但看起来这应该很容易,而且我无法在网上找到现成的文档。

我正在尝试设置一个在成功构建后自动部署在Continuous Integration环境中的服务。

1 个答案:

答案 0 :(得分:1)

据我记忆,你需要分开清理和复制。首先删除/清除,然后复制。我无法(在我上次做的时候)找到一种“覆盖”的方法。这实际上对我们来说效果更好b / c一个构建可能会删除前一个包含的文件,所以我们不希望它们“逗留”。

要删除,请尝试(假设DeploymentDesintationPath是具有路径的属性):

<MSBuild.ExtensionPack.FileSystem.Folder
     TaskAction="RemoveContent" 
     path="$(DeploymentDestinationPath)" />

然后复制(注意您需要填充源和目标的项目组)

<ItemGroup>    
      <DeploymentSourceFiles
           Include="$(BuildFolder)\**\*"
      />  
      <DeploymentDestinationFiles
           Include="@(DeploymentSourceFiles->
           '$(DeploymentDestinationPath)\%(RecursiveDir)%(Filename)%(Extension)')"
      />  
</ItemGroup>

<Copy SourceFiles="@(DeploymentSourceFiles)"
     DestinationFiles="@(DeploymentDestinationFiles)" />

我在几个月内没有这样做,所以请原谅,如果这些例子中的任何一个需要稍微调整一下。