使用代码1退出的构建后事件

时间:2014-07-23 20:30:09

标签: c# visual-studio-2013

我正在尝试使用Post Build事件清理release文件夹,因此我删除了.xml.pdb文件并尝试将所有dll文件复制到自定义lib文件夹中我得到Post Build Exited with Code 1

我的代码:

if $(ConfigurationName) == Release del "$(TargetDir)*.xml", "$(TargetDir)*.pdb"
if $(ConfigurationName) == Release xcopy "$(TargetDir)\*.dll" "$(TargetDir)\lib\"

如图所示,2个命令由新行分隔... 还存在Lib文件夹。

7 个答案:

答案 0 :(得分:7)

而不是

xcopy $(TargetDir)*.dll $(TargetDir)lib\

你应该使用

xcopy "$(TargetDir)*.dll" "$(TargetDir)lib\"

处理路径中的空格。

答案 1 :(得分:3)

尝试以管理员身份运行打开VS - >打开项目 - >建立。

答案 2 :(得分:2)

首先,尝试使用$(TargetDir)\,因为有一些变量在没有尾部斜杠的情况下返回,这会连接您的路径,因此您正在寻找bin\Debuglib\而不是bin\Debug\lib

正如@Uwe Keim所指出的,Return Code 1 means no files found to copy。如果你指向一个无效的文件夹,这也会发生这种情况,这进一步说明你可能需要\

del命令也有可能失败,尽管del上的相同technet文章没有指出任何返回码。某些论坛来源表明返回代码为1可能表示删除失败。

答案 3 :(得分:0)

这个修改对我有用:

del *.XML, *.pdb
xcopy /y "$(TargetDir)*.dll" "$(TargetDir)lib\"

1)。省略del命令中的目标目录变量

2)。 / y选项在xcopy中 Microsoft帮助页面中的注释:/ y:禁止提示您确认是否要覆盖现有目标文件。

答案 4 :(得分:0)

此解决方案适合我

xcopy "$(TargetDir)*.dll" "$(TargetDir)lib\"

答案 5 :(得分:0)

如果在Copy命令中使用相对路径,请确保父目录引用您想要的相应目录,否则您将收到退出代码1错误。

例如:

f . g $ x

这里,Project1和MainProject在SolnFolder共存。当我想到将xyz.dll复制到MainProject的x86文件夹时,它失败了,因为复制命令中使用的\ \是指源路径的释放文件夹而不是SolnFolder。因此,以下解决了这个问题:

copy "C:\SolnFolder\project1\release\bin\xyz.dll" "..\MainProject\bin\x86\"

注意:此外,确保引号与每个相对路径一起使用

答案 6 :(得分:0)

我总是在NIAC行结束我的前/后构建事件,因为xcopy之类的程序即使成功也似乎返回非零错误。