Private/ExtractCsprojMetaData.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function ExtractCsprojMetaData {
    Write-Verbose "Getting csproj of $PackageProjectPath and extract package name and version metadata."
    $csprojPath = Join-Path $PackageProjectPath "*.csproj"
    $csprojXml = [xml](Get-Content $csprojPath -ErrorAction Stop)

    $packageVersion = $csprojXml.Project.PropertyGroup.Version | Where-Object { $_ -ne $null }
    $packageName = $csprojXml.Project.PropertyGroup.PackageIdentifier | Where-Object { $_ -ne $null }
    if ($null -eq $packageName) {
        $packageName = $csprojXml.Project.PropertyGroup.AssemblyName | Where-Object { $_ -ne $null }
    }
    if ($null -eq $packageName) {
        $packageName = Get-ChildItem $csprojPath | ForEach-Object { $_.BaseName }
    }

    if ($null -eq $packageName -or $null -eq $packageVersion) {
        Write-Verbose "Package name: ${packageName}"
        Write-Verbose "Package version: ${packageVersion}"
        Write-Error "Couldn't extract package name and version." -ErrorAction Stop
    }

    return ($packageName, $packageVersion)
}