65.9K
CodeProject 正在变化。 阅读更多。
Home

.NET MAUI AndroidManifest.xml 文件的自动化版本号

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (2投票s)

2024年5月22日

CPOL

1分钟阅读

viewsIcon

14706

在本文中,我将介绍一种在 AndroidManifest.xml 文件中更新版本号的自动化方法。

Visual Studio 2022 社区版预览版是我开发 .NET Maui 应用的首选 IDE。 在按照以下指南在 Google Play 商店进行内部测试部署时:为 Google Play 分发发布 .NET MAUI Android 应用 – .NET MAUI | Microsoft Learn,我意识到我不得不手动编辑项目属性编辑器中的清单文件中的 Android 版本代码。 我真正想要的是一种自动更新 AndroidManifest.xml 文件中版本号的方法。

为了实现这一点,我使用了一个名为“Automatic Versions 3”的扩展,该扩展具有许多设置,可以控制更新程序集版本号。 我将版本号的构建部分设置为始终递增。 因此,每次进行调试或发布构建时,构建号都会增加。

这样就可以在构建时自动设置程序集版本号了。 为了更新 androidmanifest.xml 文件,我使用一个预构建事件并执行以下 PowerShell 脚本。 我要感谢 GitHub Copilot(或者可能是 Edge 侧边栏 Copilot)为我生成了这段代码。

param([string]$projectPath, [string]$androidManifestPath)

# Extract AssemblyVersion from .csproj file
$assemblyVersion = [System.Text.RegularExpressions.Regex]::Match((Get-Content $projectPath -Raw), '<AssemblyVersion>(.*?)</AssemblyVersion>').Groups[1].Value

# Split AssemblyVersion into parts
$versionParts = $assemblyVersion.Split('.')

# Set versionCode as the third number in AssemblyVersion
$versionCode = $versionParts[2]

# Set versionName as the full AssemblyVersion
$versionName = $assemblyVersion

# Load AndroidManifest.xml as an XML document
$androidManifest = [xml](Get-Content $androidManifestPath)

# Update android:versionCode and android:versionName
$manifest = $androidManifest.SelectSingleNode("/manifest")
$manifest.SetAttribute("android:versionCode", $versionCode)
$manifest.SetAttribute("android:versionName", $versionName)

# Save the updated AndroidManifest.xml
$androidManifest.Save($androidManifestPath)

我在项目文件中添加了预构建目标。

	<Target Name="UpdateVersionInformation" BeforeTargets="BeforeBuild">
		<Exec Command="powershell -File $(ProjectDir)UpdateAndroidManifest.ps1 "$(ProjectDir)MyNextBook.csproj" "$(ProjectDir)Platforms\Android\AndroidManifest.xml"" />
	</Target>

就这样了。 使用扩展更新程序集版本。 一个预构建命令,执行一个 PowerShell 脚本,该脚本从程序集版本信息中提取信息来更新 androidmanifest.xml 文件。

现在,部署到 Google Play 商店进行内部测试,变得更容易了一步。

© . All rights reserved.