当前位置:  开发笔记 > 编程语言 > 正文

Post Build退出代码1

如何解决《PostBuild退出代码1》经验,为你挑选了7个好方法。

我有一个带有post build事件的项目:

copy $(ProjectDir)DbVerse\Lunaverse.DbVerse.*.exe  $(TargetDir)

它每次都在我的机器上工作正常.我有一个新的开发人员总是得到"退出代码1"错误.我让她在DOS提示符下运行相同的命令,它工作正常.可能是什么导致了这个?有没有办法解决真正的错误?

我们都使用Visual Studio 2008.



1> Tim Scott..:

她的路径中的一个文件夹名称中有一个空格,周围没有引号.


在路径名上加上引号是一种很好的做法.不在包含空间的路径中工作是事件更好:-)
copy/y"$(TargetDir)Dotfuscated \""$(TargetDir)"这个命令对我不起作用,如果我在结束时写出0,那么工作正常.你能告诉我为什么吗?

2> JanBorup..:

带有"Pings"的人帮助了我......但可能会更好一点解释......

对我来说,解决方案是改变:

copy $(TargetDir)$(TargetName).* $(SolutionDir)bin

对此:

copy "$(TargetDir)$(TargetName).*" "$(SolutionDir)bin"

希望对你有效.:-)



3> 小智..:

我对代码1的原因是目标文件夹是只读的.希望这有助于某人!我有一个post build事件来从一个目录复制到另一个目录,目标是只读的.所以我只是去取消选中目录及其所有子目录的只读属性!只要确保它的目录是安全的!



4> Valamas..:

我已经为未来的访问者添加了这个,因为这是一个非常活跃的问题.

ROBOCOPY以"成功代码"退出,该代码低于8.请参阅:http://support.microsoft.com/kb/954404

这意味着:

robocopy exit code 0 = no files copied
robocopy exit code 1 = files copied
When the result is 1, this becomes an error exit code in visual studio.

所以我通过将其添加到批处理文件的底部轻松解决了这个问题

exit 0

建议以这种方式处理ROBOCOPY错误

rem each robocopy statement and then underneath have the error check.
if %ERRORLEVEL% GEQ 8 goto failed

rem end of batch file
GOTO success

:failed
rem do not pause as it will pause msbuild.
exit 1

:success
exit 0    

没有文件被复制时,将设置混淆= VS中没有错误.然后当有变化时,文件会被复制,VS错误,但开发人员想要的一切都已完成.

附加提示:不要在脚本中使用暂停,因为这将成为VS构建中的无限暂停.在开发脚本时,使用类似的东西timeout 10.您会注意到这一点并将其注释掉,而不是悬挂构建.


正是我想要的。谢谢!!

5> Asher..:

从 SysInternals 获取进程监视器,将其设置为监视Lunaverse.DbVerse(在Path字段上)查看操作结果.从那里出现什么问题应该很明显



6> wruckie..:

我必须以管理员身份运行VS,才能将我的构建后拷贝到受操作系统保护的"..\Common7\IDE\PrivateAssemblies"工作



7> Bohdan Kuts..:

针对这一情况,谁使用" 副本在"命令生成事件(预生成事件命令行或/和生成后事件命令行的)项目- >属性:你复制 "命令参数应该像在这里:copy "source of files" "destination for files".请记住使用引号(以避免地址字符串中的空格问题).

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有