跨三个平台的Xamarin移动应用版本号方案

17

这里可能有多个相关问题。我正在尝试为我们从单个Xamarin解决方案构建的3个移动应用程序想出一个简单的版本号更新方案。

我正在寻找一种简单的方法来使所有这些值保持同步,而不必逐个进行更新。

  • Windows Phone版本应自动设置为AssemblyVersion或FileVersion
  • iOS版本号应设置为相同(不确定构建号应该是什么)
  • Android版本名称应设置为相同
  • 每次发行版后,Android版本号应自动递增

我当前的设置需要在4个不同的地方导航以手动同步版本号。

  1. 全局程序集信息

我有一个链接文件,其中包含所解决方案中所有PCL和平台项目共享的AssemblyVersion和AssemblyFileVersion信息。

[assembly: AssemblyVersion("2.1.1.*")]
[assembly: AssemblyFileVersion("2.1.1.0")]
  1. 安卓系统

在安卓项目下,我必须手动更新版本名称和版本号(int)。

Version Name: 2.1.1
Version Number: 2
  1. IOS

在 iOS 应用选项卡下,我还有两个需要填写的字段。

Version Number: 2.1.1
Build Number: 0 //Not sure if I'm using this field correctly.
  1. Windows Phone

在 WMAppManifest 属性对话框的 "打包" 选项卡中,我还需要提供版本号。

Version Number: 2.1.1.0
2个回答

5
我们开发了一款工具,可以同步程序集、Android 和 iOS 版本;我刚刚将其推送到我们的 GitHub 存储库中:https://github.com/soltechinc/soltechxf/。如果您克隆该存储库并构建 UpdateVersionInfo,它应该可以满足您的需求。
UpdateVersionInfo.exe:
  -?                          Shows help/usage information.
  -v, --major=VALUE           A numeric major version number greater than zero.
  -m, --minor=VALUE           A numeric minor number greater than zero.
  -b, --build=VALUE           A numeric build number greater than zero.
  -r, --revision=VALUE        A numeric revision number greater than zero.
  -p, --path=VALUE            The path to a C# file to update with version
                              information.
  -a, --androidManifest=VALUE The path to an android manifest file to update
                              with version information.
  -t, --touchPlist=VALUE      The path to an iOS plist file to update with
                              version information.

默认版本(即,如果您不提供任何参数,则会得到的版本)为1.0.0.0。

该工具可以使用相对路径或绝对路径来访问文件,我的建议是按照它已经使用的方式进行操作:将版本.cs文件作为链接文件(或在共享项目中),并删除包含在该Version.cs文件中的任何AssemblyInfo属性。

我应该补充说明,该工具目前假定您将同时更新iOS和Android项目以及C#代码。(我刚刚给自己加了个小纸条,以后会让这些是可选的。)

编辑:刚才注意到之前的Andy已经注意到了这一点,并且已经处理过了(这很出乎意料; 我通常对着过去的Andy骂人...)。如果您没有为Android清单或iOS Info.plist提供路径,它将跳过它们。


太棒了,非常感谢。 - Eoin Campbell

2
你可以看一下xavtool
典型流程:
$ xavtool current
1.0.1 - androidApp (...\test\AndroidManifest.xml)
1.0.1 - iOSApp (...\test\Info.plist)
1.0.1.0 - uwpApp (...\test\Package.appxmanifest)

$ git flow release start '1.1.0'

$ xavtool i
1.0.1: New version: 1.1.0 (...\test\AndroidManifest.xml)
1.0.1: New version: 1.1.0 (...\test\Info.plist)
1.0.1.0: New version: 1.1.0.0 (...\test\Package.appxmanifest)

$ git commit -am "Version bump to 1.1.0"
$ git flow release finish -p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接