在自定义MSBuild任务中更改引用没有达到预期的效果

时间:2019-03-02 01:10:46

标签: visual-studio msbuild

我写了一个自定义任务,该任务实现了与MSBuild一起使用的Task。这个想法是,它改变了各种参考提示路径。我意识到有一些使用条件的简单方法,但是更新NuGet软件包之类的自动化工具在它们中不能很好地发挥作用。

我这样称呼我的任务:

<Target Name="ChangeReferences">
    <Message Importance="High" Text="&lt;&lt;&lt; %Reference.HintPath)" />

    <ChangeReferences References='@(Reference)'>
        <Output ItemName="Reference" TaskParameter="Result" />
    </ChangeReferences>

    <Message Importance="High" Text="&gt;&gt;&gt; %Reference.HintPath)" />
</Target>

结果(已编辑)符合预期:

4>  <<< ..\packages\MyProject.1.0.0\lib\net462\MyProject.dll
.
.
.
4>  >>> C:\Projects\MyProject\MyProject\bin\Debug\MyProject.dll

但是,这对导入的DLL没有影响。好的,我想,有一些明显的可能解释:

  1. 在执行任务之前,DLL已被导入
  2. 此字段仅供参考,

因此,我将HintPath设置为一个无意义的值,以为任何一种解释都是正确的,那将是无效的。但是,瞧,没有找到参考!因此,它似乎只有在不好的情况下才会起作用。

这完全把我扔了。如果有其他需要帮助的地方,我很乐意提供更多数据,但我认为这可能已经很混乱了。

1 个答案:

答案 0 :(得分:1)

答案在作业中。它不会像我期望的那样覆盖Reference。它似乎保持重复。