为什么在使用MSBuild进行构建失败后,PowerShell的$LastExitCode变量始终为0?

11
我注意到当MSBuild失败时,$LastExitCode变量的值总是0。我使用的是Windows 7,MSBuild v4.0和PowerShell 2.0。这是我的MSBuild脚本:
<?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窗口,但也没有用。


3
我尝试了你的案例,$LastExitCode 的值为1。 - Roman Kuzmin
1
在检查该变量之前,您是否运行了任何其他本机命令? - Joey
2个回答

13

最近我遇到了一个问题。原来是我的个人资料中的一些代码更新了$lastexitcode- 这段代码是一个自定义提示生成器。尝试使用“powershell -noprofile”运行powershell,以查看问题是否可能是您个人资料中的代码。

考虑检查值$?
如果$lastexitcode是非零的,则它为false...即使$lastexitcode没有工作,它对我也有效。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接