【问题标题】:How to convert NAnt function "path::combine(path1, path2)" to MSBuild?如何将 NAnt 函数“path::combine(path1, path2)”转换为 MSBuild?
【发布时间】:2010-03-24 11:31:30
【问题描述】:

我需要转换函数“path::combine(path1, path2)”。如果您有任何想法,请帮助我。谢谢!

【问题讨论】:

  • CombinePath 任务确实没有列在摘要页面中,而只列在“MSBuild 任务参考”下的树形导航中。
  • 我明白你的意思。看起来 MSBuild 团队最近在列表中添加了它(按字母顺序显示)。
  • 我用一个解决方法更新了我的示例,如果将空路径传递给 CombinePath 任务,它应该返回 BasePath。

标签: msbuild nant


【解决方案1】:

使用 CombinePath 任务:

<Project DefaultTargets="DefaultTarget" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <MyBasePath>.\a\b</MyBasePath>
        <MySecondPath>c\d</MySecondPath>
    </PropertyGroup>

    <Target Name="Combine">
        <PropertyGroup>
            <MySecondPath Condition="$(MySecondPath)==''">.\</MySecondPath>
        </PropertyGroup>
        <CombinePath BasePath="$(MyBasePath)" Paths="$(MySecondPath)">
            <Output TaskParameter="CombinedPaths" PropertyName="CombineOutput" />
        </CombinePath>
    </Target>

    <Target Name="DefaultTarget" DependsOnTargets="Combine">
        <Message Text="Result from Combine is $(CombineOutput)" />
    </Target>

</Project>

【讨论】:

  • 谢谢!这很奇怪,因为我从msdn.microsoft.com/en-us/library/7z253716(v=VS.90).aspx 的 MSBuild 任务参考中寻找任务。微软没有列出 那里。 :(
  • 我测试过发现:当第二个路径为空时,CombinePath 不会返回第一个路径。因此,与 NAnt path::combine 相比,我们应该注意到这个微小的差异。
【解决方案2】:

更新此帖子以获取较新的 MsBuild 版本。从 MSBuild 4.0 起,您可以使用property functions

$([System.IO.Path]::Combine($(Path1),$(Path2)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2012-06-20
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多