如何使用Post Build事件删除$(TargetDir)

时间:2016-05-27 11:18:30

标签: visual-studio post-build-event

情景:

我们有一个分发给2个不同客户的程序集,在post build事件中,我将$(TargetDir)复制到2个不同的目录,这意味着$(TargetDir)变得多余。

我的脚本如下所示:

    start /min xcopy "$(TargetDir)*.*" "$(TargetDir)..\Folder1" /s /y /i
    start /min xcopy "$(TargetDir)*.*" "$(TargetDir)..\Folder2"  /s /y /i

然后我尝试使用:

删除$(TargetDir)
    start /min rd /s /q "$(TargetDir)"

然而,这失败了"该进程无法访问该文件,因为它正被另一个进程使用。"

也尝试过使用:

    attrib -R "$(TargetDir)*.*" /S

在删除之前,但仍然没有快乐。

1 个答案:

答案 0 :(得分:2)

反恶意软件永远是像这样的后期构建的问题,它还没有用扫描可执行文件看似无处不在。在删除所有文件之前,不能销毁该目录,这在扫描完成之前不会发生。

您可以考虑多种解决方法:

  • 将$(TargetDir)更改为Folder1,这样您就没有额外的副本而且不必删除任何内容。
  • 仅删除文件而不删除目录。
  • 不要删除任何内容,因为这样只会强制每次重建项目。
  • 告诉用户为构建目录添加排除项。

从第4个项目开始,找出确实是用户的反恶意软件产品导致此问题的最佳方法。如果它是Avast,那么不要再看了,人类的这种枯萎不属于程序员的机器。