忽略工作中的錯誤

有時您會希望組建能夠容忍某些工作中的錯誤。 如果這些非關鍵性的工作失敗,您會想要讓組建繼續執行,因為它仍然可以產生所需的輸出。 例如,如果專案使用 SendMail 工作,在建置每個元件之後傳送電子郵件訊息,您可能會考慮,即使郵件伺服器無法使用且無法傳送狀態訊息,還是能夠接受組建繼續完成。 或者,例如,如果通常會在建置期間刪除中繼資料檔案,您可能會考慮,即使無法刪除這些檔案,還是能夠接受組建繼續完成。

除了此處所述的工作專屬方法之外,您也可以使用 MSBuild 的一般忽略警告方式,例如,使用屬性 MSBuildWarningsAsMessages。 查看一般 MSBuild 專案屬性

使用 ContinueOnError 屬性

Task 項目的 ContinueOnError 屬性可控制當工作失敗發生時,建置是否要停止或繼續。 此屬性也可控制當組建繼續時,是否要將錯誤視為錯誤或警告。

ContinueOnError 屬性可包含一或多個下列值:

  • WarnAndContinuetrue。 當工作失敗時,Target 項目中的後續工作與組建都會繼續執行,並將來自工作的所有錯誤視為警告。

  • ErrorAndContinue。 當工作失敗時,Target 項目中的後續工作與組建都會繼續執行,並將來自工作的所有錯誤視為錯誤。

  • ErrorAndStopfalse (預設值)。 當工作失敗時,就不會執行 Target 項目中的其餘工作和組建,並將整個 Target 項目與組建視為失敗。

只有 4.5 版之前的 .NET Framework 版本支援 truefalse 值。

ContinueOnError 的預設值為 ErrorAndStop。 如果將屬性設為 ErrorAndStop,就會明確地針對任何讀取專案檔的人做出此行為。

忽略工作中的錯誤

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

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

範例

下列程式碼範例將說明 Build 目標仍會執行,並將組建視為成功,即使 Delete 工作失敗也一樣。

<Project DefaultTargets="FakeBuild"
    xmlns="http://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>