【问题标题】:How to check if a target exists or not before calling it?如何在调用之前检查目标是否存在?
【发布时间】:2010-03-25 14:32:09
【问题描述】:

有没有办法检查目标是否存在,以便我们只有在它存在时才能调用它?

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    你可以让一个 Target 依赖于另一个 Target

    ...
    
    <Target Name="Two" DependsOnTargets="One">
        <Message Text="... comes Two." />
    </Target>
    
    <Target Name="One">
        <Message Text="After One ..." />
    </Target>
    ...
    

    您最近的帖子表明您非常依赖调用 Targets,据我了解,这违反了 MSBuild 的理念。

    尝试对目标之间的依赖关系进行建模。

    【讨论】:

    • 如果目标“二”是预先存在的目标怎么办? IE。不是你写的。
    • @NineTails 依赖应该始终有效 - 除非您尝试依赖不存在的目标。
    • 我的意思是,假设我希望“构建”任务依赖于我的目标。我无法编辑“构建”任务并为其赋予“DependsonTargets”属性,并且似乎没有等效的逆属性,例如'取决于此目标'。那么如何在不编辑目标“Two”的情况下使目标“One”始终在目标“Two”之前运行?
    • @NineTails This answer to "What happened to BeforeBuild and other targets in VS2012" 应该可以解决您的问题。我有一段时间没有使用 MSBuild,也不知道 BeforeTargetsAfterTargets,但快速搜索发现了这些。
    • @Filburt 很遗憾没有。如果目标 'One' 具有属性 'BeforeTargets="TargetTwo"',那么如果您调用 'TargetTwo' 则 'TargetOne' 将不会执行,如果您调用 'TargetOne' 则 'TargetOne' 将执行然后 'TargetTwo'。我正在寻找一种调用“TargetTwo”的方法,并且总是在它之前运行“TargetOne”,就像我可以设置“TargetTwo DependsOnTargets="TargetOne"”一样。我不相信 MSBuild 可以做到这一点。
    猜你喜欢
    • 2017-06-08
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多