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

Aar*_*sen 9 msbuild powershell

我注意到当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>
Run Code Online (Sandbox Code Playgroud)

当我跑:

msbuild.exe MyProject.csproj
Run Code Online (Sandbox Code Playgroud)

我可以在输出中看到MSBuild失败,但是当我检查时$LastExitCode,它的值为0.任何人都知道可能会发生什么?

我试过设置$(ErrorActionPreference)Stop,但没有奏效.我重新打开了一个新的PowerShell窗口,它也没有用.

Fra*_*man 11

我最近遇到了一个问题.事实证明,我的个人资料中的一些代码正在更新$ lastexitcode-代码是一个自定义提示生成器.尝试使用"powershell -noprofile"在没有您的配置文件的情况下运行powershell,以查看问题是否可能是您的个人资料中的代码.

考虑检查值$?
如果$ lastexitcode非零,那就错了......即使$ lastexitcode没有,它也适用于我.