8

每次我进行构建时,我都希望发生此 Pre-build 事件:

del  $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config

如果目录在那里,这可以正常工作。但是如果该目录不存在,那么它将导致构建失败。我尝试做这样的事情来检查目录是否存在:

if Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\')   
del  $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config

但我相信我的语法是错误的,因为我得到了 255 的退出代码。让它工作的正确方法是什么?

谢谢!

4

2 回答 2

11

显然这有效:

if EXIST "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" (
del  "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config"
)

上面的代码是我尝试这样做的第一种方法。但它一直失败。经过多次尝试,我最终重新启动了 Visual Studio 2015 并再次输入该代码,然后它开始工作。

于 2016-02-01T18:45:34.987 回答
3

我会使用一个目标来实现这一点。具体来说,我建议覆盖BeforeBuild目标。有几种不同的方法可以做到这一点,但最简单的是修改你的.vcxproj文件恕我直言。

在项目文件的底部(您可以通过在 Visual Studio 中右键单击项目 -> 卸载项目来编辑它,然后再次右键单击并选择编辑该项目),您应该会看到<Import ...一行。在该行之后添加一个目标,如下所示:

<Target Name="BeforeBuild" Condition="Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config')">
  <Delete Files="$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" />
</Target>

有关覆盖 Before 和 After 目标的更多信息,请参见如何:扩展 Visual Studio 构建过程

于 2016-02-01T18:54:16.790 回答