visual-studio-2010 - 将robocopy与Visual Studio 2010生成后和生成前事件一起使用

标签 visual-studio-2010 batch-file msbuild robocopy

Robocopy成功时输出1,与大多数程序成功时退出0不同。 Visual Studio(和MSBUILD)将退出代码1解释为错误。

Robocopy如何在Visual Studio的构建后和构建前事件中使用,以使构建环境正确识别其失败和成功?

注意:这或多或少是this post的转发。

最佳答案

MSBuild extensionpack包含您可以在构建过程中使用的Robocopy任务。
这可以代替VS生成前/生成后事件为您提供解决方案吗?

如果是这样,可以通过覆盖BeforeBuild,AfterBuild目标并调用Robocopy任务来extend the Visual Studio Build Process(如果它们更适合您的需求,您也可以覆盖其他目标,请参见链接的MSDN页面中的列表)
因此,实际上,您应该下载并安装MSBuild extensionpack,而不是打开项目的csproj / vbproj文件并编辑以下方式:

添加以下条目以导入MSBuild extensionpack的Robocopy任务

<PropertyGroup>
    <TPath>$(MSBuildExtensionsPath32)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks</TPath>        
</PropertyGroup>
<Import Project="$(TPath)"/>

覆盖BeforeBuild,AfterBuild并执行Robocopy任务
<Target Name="BeforeBuild">
<Message Text="Beforebuild" />
  <MSBuild.ExtensionPack.FileSystem.RoboCopy Source="C:\temp\robo_src1" Destination="C:\temp\robo_dest1" Files="*.*" Options="/MIR">
      <Output TaskParameter="ExitCode" PropertyName="Exit" />
      <Output TaskParameter="ReturnCode" PropertyName="Return" />
  </MSBuild.ExtensionPack.FileSystem.RoboCopy>
  <Message Text="ExitCode = $(Exit)"/>
  <Message Text="ReturnCode = $(Return)"/>
</Target>
<Target Name="AfterBuild">
  <MSBuild.ExtensionPack.FileSystem.RoboCopy Source="C:\temp\robo_src2" Destination="C:\temp\robo_dest2" Files="*.*" Options="/MIR">
      <Output TaskParameter="ExitCode" PropertyName="Exit" />
      <Output TaskParameter="ReturnCode" PropertyName="Return" />
  </MSBuild.ExtensionPack.FileSystem.RoboCopy>
  <Message Text="ExitCode = $(Exit)"/>
  <Message Text="ReturnCode = $(Return)"/>
</Target>

关于visual-studio-2010 - 将robocopy与Visual Studio 2010生成后和生成前事件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5470828/

相关文章:

c++ - Visual Studio 2010 Express Edition 中的 "Cannot open include file: ' ofstream '"错误?

windows - 在 Windows 中使用命令文件自动定位应用程序窗口

gradle - 调用gradle脚本build.gradle并设置是否应该构建调试/发布风格并编写通用任务?

java - Ant .NET 库文档? (设置控制台记录器参数)

mysql - 使用 Between 无法正常工作选择带日期的查询

windows - DirectX 11 SDK - 我可以在哪里下载它?

windows - 批处理脚本失败 - 无法在没有引号的情况下将文本输出到文件,但是不需要引号

jenkins - TFS、Jenkins 以及如何使用内部版本号更新工作项

visual-studio-2010 - Visual Studio 的 Web 部署 "Mark as an IIS Application on destination"是什么意思?

windows - 用于将 psql 查询输出存储到变量中的批处理文件