我客户端解决方案中的一些项目有一个构建后事件:xcopy
构建输出到特定文件夹.这在本地构建时工作正常.但是,在TeamCity中,我偶尔会得到
xcopy [...]退出代码2
如果我使用常规copy
,它将退出代码1.我希望这与文件锁有关,虽然复制的特定文件不一样,所以可能只是锁定共享目标目录.我/y
用来不提示覆盖文件.
为什么在TeamCity中失败但在本地失败?
Met*_*urf 136
即使您/Y
使用xcopy 提供交换机,当xcopy不知道您要复制的内容是文件还是目录时,仍会出现错误.此错误将显示为"已退出代码2".当您在命令提示符下运行相同的xcopy时,您将看到xcopy要求文件或目录的响应.
要使用自动构建解决此问题,您可以使用管道回显预定义的响应.
要说你正在复制的东西是一个文件,回显F
:
echo F|xcopy /y ...
Run Code Online (Sandbox Code Playgroud)
要说你正在复制的东西是一个目录,回显D
:
echo D|xcopy /y ...
Run Code Online (Sandbox Code Playgroud)
有时,只需使用复制命令而不是xcopy即可解决上述问题:
copy /y ...
Run Code Online (Sandbox Code Playgroud)
但是,如果存在导致最终文件目标的不存在的目录,则将出现"退出代码1".
请记住:/C
谨慎使用开关和xcopy.
Ben*_*o99 35
我通过在路径的末尾添加\来修复错误代码2,没有它,xcopy会认为它是文件而不是文件夹.
Dav*_*idS 31
如果在后期构建事件中使用xcopy,请使用除/ C之外的/ Y开关.
/C Continues copying even if errors occur.
/Y Suppresses prompting to confirm you want to overwrite an existing file.
Run Code Online (Sandbox Code Playgroud)