PowerShell - 从 .csproj 文件获取版本

Som*_*ser 9 c# powershell

我正在学习 PowerShell。现在,我正在尝试Version从 .csproj 文件中获取元素值。.csproj 文件的 XML 如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <Version>1.2.3</Version>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="MyLibrary" Version="3.2.1" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

为了Version从这个 XML获取元素值,我编写了以下 PowerShell 脚本:

$xml = [xml](Get-Content ./MyApp.csproj)

Write-Host "xml: " $xml

$version = $xml.Project.PropertyGroup.Version

Write-Host "version: $version"
Run Code Online (Sandbox Code Playgroud)

当我运行这个脚本时,我看到以下内容:

xml:

version:
Run Code Online (Sandbox Code Playgroud)

请注意,既没有写入项目 XML,也没有写入版本。起初,我以为我错误地引用了 .csproj。我故意删除了最后的“j”,并抛出了一个错误。出于这个原因,我假设我正在正确加载 .csproj 内容。但是,我相信我没有在我的 PowerShell 脚本中正确解析 XML。

如何Version从 PowerShell 脚本中的 .csproj 值中获取 ?

Bil*_*art 10

如前所述,Write-Host仅输出,不能重定向。除此之外,我无法重现它。这对我有用:

$xml = [Xml] (Get-Content .\MyApp.csproj)
$version = [Version] $xml.Project.PropertyGroup.Version
Run Code Online (Sandbox Code Playgroud)

(强制转换[Version]使获取版本的各个部分、与其他版本进行比较等变得更容易)