【问题标题】:Select-Xml returns file nameSelect-Xml 返回文件名
【发布时间】:2018-08-27 13:31:01
【问题描述】:

当使用 Select-Xml 解析我的 *.csproj 时,除了从预期的输出中,我还得到一个参数的 concat。

这是怎么回事?

$version = Select-Xml -Path $projectFilePath -XPath "/Project/PropertyGroup/Version"
Write-Host $version
Start-Sleep -Seconds 5
EXIT

这会返回

1.0.1:D:\somepath\someproject.csproj

而不是

1.0.1

csproj的sn-p

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard1.3</TargetFramework>
    </PropertyGroup>
    <PropertyGroup>
        <GeneratePackageOnBuild>false</GeneratePackageOnBuild>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <Version>1.0.1</Version>
    </PropertyGroup>
</Project>

【问题讨论】:

    标签: powershell select-xml


    【解决方案1】:

    感谢sn-p,现在我可以自己试试了。

    这确实有效:

    $version = Get-Content -Path $projectFilePath -Raw | Select-Xml -XPath "/Project/PropertyGroup/Version"
    Write-Host $version
    

    【讨论】:

    • 仍然有点惊讶为什么原始代码会导致这种情况,但没关系......至少这是可行的
    • @Dbl 确实如此。对我来说似乎是一个错误。还使用 LiteralPath 将文件名附加到 Xpath 查询的所需结果中..
    【解决方案2】:

    你也可以这样做:

    [xml]$x = get-content D:\somepath\someproject.csproj 
    $x.project.propertygroup.version
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-13
      • 2011-03-16
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多