gpt4 book ai didi

msbuild - 尝试...最终在 MsBuild 中等效

转载 作者:行者123 更新时间:2023-12-04 00:59:36 26 4
gpt4 key购买 nike

我如何在“测试”目标运行后运行某个清理任务,无论测试目标是成功还是失败(如 C#/Java 中的 try...finally 构造)。

最佳答案

Target 元素有一个 OnError 您可以将属性设置为目标以在出错时执行,但由于它仅在目标出错时执行,因此它只能解决一半的情况。

您是否考虑过将目标链接在一起来表示您想要执行的测试“步骤”?

<PropertyGroup>
<TestSteps>TestInitialization;Test;TestCleanup</TestSteps>
</PropertyGroup>

“TestInitialization”目标是您可以执行任何测试初始化​​的地方,“Test”目标执行测试,“TestCleanup”目标执行任何类型的测试后清理。

然后,使用 执行这些目标调用目标 任务,使用 单独运行每个目标 属性设置为 .这将执行所有目标,无论成功或失败。

完整示例如下:
<Project DefaultTargets = "TestRun"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >

<!-- Insert additional tests between TestInitialization and TestCleanup as necessary -->
<PropertyGroup>
<TestSteps>TestInitialization;Test;TestCleanup</TestSteps>
</PropertyGroup>

<Target Name = "TestRun">

<CallTarget Targets="$(TestSteps)" RunEachTargetSeparately="True" />

</Target>

<Target Name = "TestInitialization">
<Message Text="Executing Setup..."/>
</Target>

<Target Name = "Test">
<Message Text="Executing Test..."/>

<!-- this will fail (or should unless you meet the conditions below on your machine) -->
<Copy
SourceFiles="test.xml"
DestinationFolder="c:\output"/>
</Target>

<Target Name = "TestCleanup">
<Message Text="Executing Cleanup..."/>
</Target>

</Project>

关于msbuild - 尝试...最终在 MsBuild 中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com