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

Eoi*_*ell 16 versioning version-numbering xamarin xamarin.forms

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

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

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

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

  1. 全球大会信息

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

[assembly: AssemblyVersion("2.1.1.*")]
[assembly: AssemblyFileVersion("2.1.1.0")]
Run Code Online (Sandbox Code Playgroud)
  1. Android的

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

Version Name: 2.1.1
Version Number: 2
Run Code Online (Sandbox Code Playgroud)
  1. IOS

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

Version Number: 2.1.1
Build Number: 0 //Not sure if I'm using this field correctly.
Run Code Online (Sandbox Code Playgroud)
  1. Windows Phone

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

Version Number: 2.1.1.0
Run Code Online (Sandbox Code Playgroud)

And*_*per 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.
Run Code Online (Sandbox Code Playgroud)

默认版本(即,如果不提供任何参数,您将获得的版本)是1.0.0.0.

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

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

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