【问题标题】:msbuild - how to see value of Inputs and Outputs for a Targetmsbuild - 如何查看目标的输入和输出值
【发布时间】:2026-01-17 11:05:01
【问题描述】:

我为我的构建启用了“诊断”级别的日志记录。

但是,我的构建日志中仍然没有看到 InputsOutputs 条目。

不用我手动输出,有没有办法强制它出现在目标的属性列表中?

<Target Name="buildelf" Inputs="$(LDFILE);$(OBJFILES)" Outputs="$(ELFFILE)">
...

我可以看到$(OBJFILES)$(LDFILE) 的值

Task Parameter:

Properties=
OBJFILES=.\Output\Objects\HW_Interface.doj
      .\Output\Objects\A_HW_Module.doj
      .\Output\Objects\HeapMngr.doj
LDFILE=C:\work\CANary.CPU.A.APP.ld  ELFFILE=C:\work\APP.elf (TaskId:23594)

但是从日志中,当MSBuild 说。 . .

跳过目标“buildelf”,因为所有输出文件相对于输入文件都是最新的。

。 . .我想知道输入和输出是什么。

【问题讨论】:

    标签: visual-studio msbuild


    【解决方案1】:

    如果您的目标是打印属性 $(ELFFILE) 的值,则可以在构建期间作为附加操作来完成。例如,您可以将以下目标和任务添加到项目中,以显式打印属性值以输出和记录:

        <Target Name="DisplayMyProperties">  
                <Message Importance="High" Text="Output files: $(ELFFILE)" />  
                <Message Importance="High" Text="Input files: $(LDFILE);$(OBJFILES)" />  
        </Target>
        <Target Name="buildelf" DependsOnTargets="DisplayMyProperties" Inputs="$(LDFILE);$(OBJFILES)" Outputs="$(ELFFILE)">
    

    这应该在buildelf目标中执行或跳过它们之前强制打印所有属性值。但是,您的项目似乎具有自定义结构,这可能需要调整将执行 DisplayMyProperties 目标的位置。它应该在$(LDFILE)$(OBJFILES)$(ELFFILE) 的值被填充后执行,并且独立于buildelf 目标的执行。

    【讨论】:

    • 我希望我可以自动打印所有输入和输出。这是必须要做的。
    最近更新 更多