Visual Studio预构建事件检查以查看目录(和文件)是否存在,如果存在,则将其删除

时间:2016-02-01 17:10:32

标签: msbuild visual-studio-2015 prebuild

每次我进行构建时,我都希望这个预构建事件发生:

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:6)

显然这有效:

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

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

答案 1 :(得分:2)

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

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

<Import ...

有关覆盖之前和之后目标的详细信息,请参阅How to: Extend the Visual Studio Build Process