PowerShell - 从.csproj文件获取版本

问题描述 投票:2回答:1

我正在学习PowerShell。现在,我正在尝试从.csproj文件中获取Version元素值。 .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>

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

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

Write-Host "xml: " $xml

$version = $xml.Project.PropertyGroup.Version

Write-Host "version: $version"

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

xml:

version:

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

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

c# powershell
1个回答
1
投票

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

$xml = [Xml] (Get-Content .\MyApp.csproj)
$version = [Version] $xml.Project.PropertyGroup.Version

(演员到[Version]可以更容易地获得版本的各个部分,与其他版本进行比较等)

© www.soinside.com 2019 - 2024. All rights reserved.