共用方式為


如何:忽略工作中的錯誤

有時您希望建置 (Build) 作業能夠容忍某些工作的錯誤。 如果那些非關鍵性工作執行失敗,您會希望建置作業還能繼續,因為它仍然能夠產生需要的輸出。 例如,如果專案使用 SendMail 工作,在每個元件建置完成後送出電子郵件訊息。當郵件伺服器無法使用,以致送不出狀態訊息時,您可能認為這並不會影響建置作業繼續完成。 或者,如果建置過程中通常會刪除中繼檔案,當這些檔案無法刪除時,您可能也會認為這不影響建置作業繼續完成。

使用 ContinueOnError 屬性

Task 項目的 ContinueOnError 屬性 (Attribute) 控制了工作執行失敗時,建置作業要停止或繼續。 這個屬性控制錯誤是否視為錯誤或警告,在組建繼續時。

ContinueOnError 屬性可能包含下列其中一個值:

  • WarnAndContinuetrue。 當工作失敗時,在 目標 項目和組建的後續工作繼續執行,因此,從工作的所有警告視為錯誤。

  • ErrorAndContinue。 當工作失敗時,在 Target 項目和組建的後續工作繼續執行,因此,從工作的任何錯誤都會被視為錯誤。

  • ErrorAndStop錯誤 (預設值)。 當工作失敗時,在 Target 項目和組建的剩餘工作沒有執行,因此,整個項目 Target 和組建視為失敗。

.NET Framework 的版本。4.5 之前只支援 true 和 false 值。

ContinueOnError 的預設值為 ErrorAndStop。 如果您將設定為 ErrorAndStop的屬性,可讓您明確行為對讀取專案檔的人。

若要忽略工作中的錯誤

  • 請使用工作的 ContinueOnError 屬性。 例如:

    <Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>

範例

在下列程式碼中,示範了即使 Delete 工作執行失敗,Build 目標 (Target) 仍然繼續執行,建置作業仍然視為成功。

<Project DefaultTargets="FakeBuild"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Files Include="*.obj"/>
    </ItemGroup>
    <Target Name="Clean">
        <Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>
    </Target>

    <Target Name="FakeBuild" DependsOnTargets="Clean">
        <Message Text="Building after cleaning..."/>
    </Target>
</Project>

請參閱

概念

MSBuild 工作

其他資源

MSBuild

MSBuild 工作參考