跨3个平台的Xamarin移动应用程序版本号方案

时间:2014-11-21 09:35:03

标签: xamarin versioning xamarin.forms version-numbering

这里可能存在多个相关的问题。我正在尝试为单个xamarin解决方案构建的3个移动应用程序提供一个简单的版本号更新方案。

我正在寻找的是一种简单的方法,可以让所有这些值保持同步,而无需单独更新它们。

  • Windows Phone版本应自动设置为AssemblyVersion或FileVersion
  • IOS版本号应设置为相同。 (不确定构建号应该是什么)
  • Android版本名称应设置为相同。
  • Android版本号应为每个版本构建自动递增。

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

  1. 全球大会信息
  2. 我有一个链接文件,其中包含AssemblyVersion和AssemblyFileVersion,它们由解决方案中的所有PCL和Platform项目共享,并带有以下信息。

    [assembly: AssemblyVersion("2.1.1.*")]
    [assembly: AssemblyFileVersion("2.1.1.0")]
    
    1. 的Android
    2. 单独在android项目下,我必须手动更新版本名称和版本号(int)

      Version Name: 2.1.1
      Version Number: 2
      
      1. IOS
      2. 在iOS应用程序选项卡下,我还有2个字段需要填写。

        Version Number: 2.1.1
        Build Number: 0 //Not sure if I'm using this field correctly.
        
        1. Windows Phone
        2. 在WMAppManifest Property对话框的“Packaging”选项卡上,我还必须提供版本号。

          Version Number: 2.1.1.0
          

2 个答案:

答案 0 :(得分:5)

我们已经构建了一个工具来同步程序集,Android和iOS之间的版本;我刚把它推到我们的GitHub回购:https://github.com/soltechinc/soltechxf/。如果您克隆该repo并构建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属性。

我应该补充;该工具目前假设您将使用C#代码更新iOS和Android项目。 (我刚给自己添加了一个便条纸,以便将它们作为可选项。)

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

答案 1 :(得分: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