我注意到当MSBuild失败时,$ LastExitCode变量的值始终为0.我在Windows 7上,使用MSBuild v4.0和PowerShell 2.0。这是我的MSBuild scritpt:
<?xml version="1.0" encoding="UTF-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Fail">
<Target Name="Fail">
<Error />
</Target>
</Project>
当我跑步时:
msbuild.exe MyProject.csproj
我可以在输出中看到MSBuild失败,但当我检查$LastExitCode
时,它的值为0.任何人都知道可能会发生什么?
我尝试将$(ErrorActionPreference)
设置为Stop
,但这不起作用。我重新打开了一个新的PowerShell窗口,它也无效。
答案 0 :(得分:11)
我最近遇到了一个问题。事实证明,我的个人资料中的一些代码正在更新$ lastexitcode-代码是一个自定义提示生成器。尝试使用“powershell -noprofile”在没有您的个人资料的情况下运行powershell,以查看问题是否可能是您个人资料中的代码。
考虑检查值$?
如果$ lastexitcode非零,那就错了......即使$ lastexitcode没有,它也适用于我。
答案 1 :(得分:1)
$ LASTEXITCODE适用于win32可执行文件和$?用于PS命令。从cmd运行msbuild.exe时%errorlevel%的值是多少?
如果您想了解更多关于这两个特殊变量之间的差异,请阅读http://techibee.com/powershell/what-is-lastexitcode-and-in-powershell/1847。