gpt4 book ai didi

c# - 如何在构建后事件中集成条件逻辑

转载 作者:太空宇宙 更新时间:2023-11-03 22:22:52 25 4
gpt4 key购买 nike

您好,我有一个 visual studio 项目,其中包含以下形式的 postbuildevents:

MyTool.exe $(ProjectDir)somesrcfile.txt $(TargetDir)sometargetfile.bin

现在我想添加一些逻辑,说明这些步骤只有在文件发生更改时才会发生。在伪代码中:

如果(somesrcfile.txt 比 sometargetfile.bin 更新){ MyTool.exe $(ProjectDir)somesrcfile.txt $(TargetDir)sometargetfile.bin

我可以用 MsBuild 做到这一点吗?

编辑:我只是用一个简单的复制命令尝试了它,但它似乎不起作用。此外,当我构建解决方案时不会显示该消息。

<ItemGroup>
<MyTextFile Include="*.txt" />
</ItemGroup>

<Target Name="Build" Inputs="@(MyTextFile)" Outputs="@(MyTextFile->'%(Filename).bin')">
<CustomBuild>
<Message>Encoding files...</Message>
<Command>
copy %(Identity) %(Filename).bin
</Command>
<Outputs>$(OutDir)%(Identity)</Outputs>
</CustomBuild>
</Target>

最佳答案

是的,可以通过在目标上使用 InputsOutputs 属性来实现。

参见:How to: Build incrementally

在您的情况下,它看起来像这样:

  <Target Name="AfterBuild" DependsOnTargets="Test">
</Target>

<ItemGroup>
<MyTextFile Include="*.txt" />
</ItemGroup>

<Target Name="Test" Inputs="@(MyTextFile)" Outputs="@(MyTextFile->'%(FileName).bin')">
<Message Text="Copying @(MyTextFile)" Importance="high"/>

<Copy SourceFiles="@(MyTextFile)" DestinationFiles="@(MyTextFile->'%(FileName).bin')" />

</Target>

只有当输入文件比输出文件更新时,该目标才会运行。

关于c# - 如何在构建后事件中集成条件逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499758/

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