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

How to use a Post Build Event to delete $(TargetDir)

场景:

我们有一个分发给 2 个不同客户的程序集,在 post 构建事件中,我将 $(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)"

然而,这失败了 "The process cannot access the file because it is being used by another process."

也试过使用:

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

之前删了,还是不开心

反恶意软件永远是 post 这样的构建的问题,它还没有完成扫描似乎不知从哪里出现的可执行文件。在删除所有文件之前无法销毁目录,在扫描完成之前不会发生这种情况。

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

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

从第 4 个项目符号开始,找出确实是用户的反恶意软件产品导致此问题的最佳方法。如果是 Avast 就别再看了,人类的瘟疫不属于程序员的机器。