后构build退出代码1
我有一个项目发布后事件:
copy $(ProjectDir)DbVerse\Lunaverse.DbVerse.*.exe $(TargetDir)
它在我的机器上每次都能正常工作。 我有一个新的开发人员总是得到“退出代码1”的错误。 我让她在DOS提示符下运行相同的命令,它工作正常。 什么可能导致这个? 有没有办法去真正的错误?
我们都使用Visual Studio 2008。
她的path中的一个文件夹名称中有一个空格,并且没有引号。
那个带着“Pings”的人帮助了我…但是可能会更好一点
对我来说,解决办法是改变:
copy $(TargetDir)$(TargetName).* $(SolutionDir)bin
对此:
copy "$(TargetDir)$(TargetName).*" "$(SolutionDir)bin"
希望对你有效。 🙂
我的代码1的原因是目标文件夹是只读的。 希望这可以帮助别人! 我有一个后期构build事件,从一个目录到另一个目录,目标是只读。 所以我只是去取消选中该目录及其所有子目录的只读属性! 只要确保它是一个安全的目录!
我为未来的访问者添加了这个,因为这是一个非常积极的问题。
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.
所以我解决这个很容易通过添加到batch file的底部
exit 0
build议以这种方式处理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构build中的无限期暂停。 在开发脚本时,使用类似timeout 10
东西。 你会注意到这一点,并注释掉,而不是有一个悬挂的构build。
从 SysInternals获取进程监视器将其设置为监视Lunaverse.DbVerse(在Path字段上)查看操作结果。 从那里应该是显而易见的
我必须以pipe理员身份运行VS以将我的生成后副本保存到受操作系统保护的“.. \ Common7 \ IDE \ PrivateAssemblies”
对于那些在项目 – >属性中使用“ 生成事件” ( 预 生成 事件命令行或/和生成后事件命令行 )中的“ 复制 ”命令的用户:“ 复制 ”命令参数应该如下所示: copy "source of files" "destination for files"
。 请记住使用引号(以避免地址string中的空格出现问题)。
作为一个良好的做法我build议你用MSbuild立文件复制任务replace后构build事件。
对我来说,我必须确保我正在处理的程序在当时没有运行。 语法中没有任何错误。 希望这有助于某人。
我刚收到同样的错误。 我在目标path中有一个%需要被转义
c:\projects\%NotAnEnvironmentVariable%
需要
c:\projects\%%NotAnEnvironmentVariable%%
我能够通过以pipe理员身份运行Visual Studio来修复我的代码1。 显然它没有pipe理员没有权限执行shell命令。
好吧,这是一个很多解决scheme的问题,所以我只是发布我的人给更多的提示。 我的情况是仔细检查path中的文件夹,并确保它们都存在于您的机器中。 例如:“$(SolutionDir)\ partBin \ Bin \ $(ProjectName).pdb”,但“Bin”不在partBin文件夹中。
对于在项目 – >属性:目标文件夹中使用“生成事件”(预生成事件命令行或/和生成后事件命令行)中的“复制”命令的用户应该存在
我有一个类似的问题,但具体在Jenkins构build环境。 要解决这个问题,我在后期构build事件中使用复制命令切换到使用复制目标。
我改变了这个:
<PropertyGroup> <PostBuildEvent>copy $(ProjectDir)bin\BLAH.Common.xml $(ProjectDir)App_Data\BLAH.Common.xml</PostBuildEvent> </PropertyGroup>
对此:
<Target Name="AfterBuild"> <Copy SourceFiles="$(ProjectDir)bin\BLAH.Common.xml" DestinationFolder="$(ProjectDir)App_Data\" /> </Target>
现在它工作正常。
我得到的具体错误是:
(PostBuildEvent target) -> C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(4291,5): error MSB3073: The command "copy <http://1.2.3.4/job/BLAHv2/ws/Api/bin/BLAH.Common.xml> <http://1.2.3.4/job/BLAHv2/ws/Api/App_Data/BLAH.Common.xml"> exited with code 1. [<http://1.2.3.4/job/BLAHv2/ws/Api/Api.csproj]>
这么多解决scheme…
在我的情况下,我不得不使用非Unicode(西方,Windows)编码保存bat文件。 默认情况下,当我添加到Visual Studio的文件(也许我应该已经做到了VS以外),它添加了UTF-8编码。
我有同样的问题,事实certificate,这是因为我已经重命名的项目。 我进入项目属性,并将程序集名称和根名称空间更改为项目名称,并在此后很好!