16

这里可能有多个相关的问题。我正在尝试为我们从单个 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. 安卓

单独在android项目下,我要手动更新版本名和版本号(int)

Version Name: 2.1.1
Version Number: 2
  1. IOS

在 iOS 应用程序选项卡下,我还有 2 个字段要填写。

Version Number: 2.1.1
Build Number: 0 //Not sure if I'm using this field correctly.
  1. 视窗电话

在 WMAppManifest 属性对话框的“打包”选项卡上,我还必须提供版本号。

Version Number: 2.1.1.0
4

2 回答 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。

该工具可以使用文件的相对或绝对路径,我的建议是遵循它已经听起来像您正在使用的方法:拥有一个作为链接文件(或在共享项目中)包含的单个 version.cs 文件,并删除该 Version.cs 文件中包含的任何 AssemblyInfo 属性。

我应该补充;该工具当前假定您将更新 iOS 和 Android 项目以及 C# 代码。(我只是给自己添加了一个便利贴,以使这些成为可选的。)

编辑:刚刚注意到过去的安迪已经注意到并处理了它(这是一个惊喜;我通常对过去的安迪大喊绰号......)。如果您没有为 Android 清单或 iOS Info.plist 提供路径,它将跳过它们。

于 2014-11-21T17:09:54.430 回答
1

你可以看看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
于 2018-03-27T23:12:03.727 回答