Xamarin构建基属性

Xamarin构建基属性,xamarin,xamarin.forms,xamarin.android,xamarin.ios,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,在构建期间(绑定/库),获取当前Xamarin.iOS、Xamarin.Forms版本的最快方法是什么 为Android生成时,msbuild在XamarinAndroidVersion生成属性中报告当前的Xamarin.Android版本。iOS和FROM的等价物是什么?根据您的描述,您想要获得当前版本和构建,我知道两种方法,一种是使用Xamarin.Essentials,另一种是使用Application.Context.ApplicationContext.PackageManager.G

在构建期间(绑定/库),获取当前Xamarin.iOS、Xamarin.Forms版本的最快方法是什么


为Android生成时,msbuild在XamarinAndroidVersion生成属性中报告当前的Xamarin.Android版本。iOS和FROM的等价物是什么?

根据您的描述,您想要获得当前版本和构建,我知道两种方法,一种是使用Xamarin.Essentials,另一种是使用Application.Context.ApplicationContext.PackageManager.GetPackageInfo来获取信息

使用Xamarin.Essentials:

第一次使用VersionTracking类时,它将开始跟踪当前版本。每次加载应用程序时,必须在应用程序中提前调用Track,以确保跟踪当前版本信息:

VersionTracking.Track();

 var currentVersion = VersionTracking.CurrentVersion;
 var currentBuild = VersionTracking.CurrentBuild;
有用文章:

另一种方法是使用Application.Context.ApplicationContext.PackageManager.GetPackageInfo()

Android和ios的详细信息,您可以查看:


根据您的描述,您需要获取当前版本和版本,我知道两种方法,一种是使用Xamarin.Essentials,另一种是使用Application.Context.ApplicationContext.PackageManager.GetPackageInfo获取信息

使用Xamarin.Essentials:

第一次使用VersionTracking类时,它将开始跟踪当前版本。每次加载应用程序时,必须在应用程序中提前调用Track,以确保跟踪当前版本信息:

VersionTracking.Track();

 var currentVersion = VersionTracking.CurrentVersion;
 var currentBuild = VersionTracking.CurrentBuild;
有用文章:

另一种方法是使用Application.Context.ApplicationContext.PackageManager.GetPackageInfo()

Android和ios的详细信息,您可以查看:


最快的方法是调用VS/mono命令并检查相关文件:

vsVersion=$(/Applications/Visual\ Studio.app/Contents/MacOS/VisualStudio -h | sed -E -n 's:[^0-9]+([0-9]+[0-9\.]*):\1:p')

msbuildVersion=$(msbuild /version | sed -E -n 's:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):\1:p')

monoVersion=$(cat /Library/Frameworks/Mono.framework/Versions/Current/VERSION)

xamariniOSVersion=$(cat /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/Version)

xamarinAndroidVersion=$(cat /Library/Frameworks/Xamarin.Android.framework/Versions/Current/Version).$(cat /Library/Frameworks/Xamarin.Android.framework/Versions/Current/Version.rev)

xamarinFormsVersion=$(sed -E -n 's:.+Xamarin\.Forms[^0-9]+([0-9\.]+).+:\1:p' $PATH_TO_PROJECT_PACKAGES/packages.config)

最快的方法是调用VS/mono命令并检查相关文件:

vsVersion=$(/Applications/Visual\ Studio.app/Contents/MacOS/VisualStudio -h | sed -E -n 's:[^0-9]+([0-9]+[0-9\.]*):\1:p')

msbuildVersion=$(msbuild /version | sed -E -n 's:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):\1:p')

monoVersion=$(cat /Library/Frameworks/Mono.framework/Versions/Current/VERSION)

xamariniOSVersion=$(cat /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/Version)

xamarinAndroidVersion=$(cat /Library/Frameworks/Xamarin.Android.framework/Versions/Current/Version).$(cat /Library/Frameworks/Xamarin.Android.framework/Versions/Current/Version.rev)

xamarinFormsVersion=$(sed -E -n 's:.+Xamarin\.Forms[^0-9]+([0-9\.]+).+:\1:p' $PATH_TO_PROJECT_PACKAGES/packages.config)

谢谢你的回答。我问的是如何在构建期间而不是在运行时获取这些值。在构建期间,针对Android的msbuild提供XamarinDroidVersion属性,但对于提供当前用于该构建的Xamarin.iOS、Xamarin.Forms版本的iOS构建或表单构建,没有类似的值。我想到的一件事是从Xamarin.iOS.dll(生成过程中默认路径可用)获取此文件,并解析Xamarin.Forms的packages.config。@awattar,你能告诉我为什么在生成项目时要获取当前版本和生成吗?有几个原因。最基本的方法是在构建机器上获取这个in-build日志,以验证构建的内容、时间以及主要程序集。如果Xamarin.Android版本能够公开和打印这些最基本的值,那么iOS和Forms版本也应该如此。如果您希望使用AppCenter,可以使用一个简单的sh脚本在构建过程中触发。他们在appcenter上做得很好!您可以对脚本的预构建部分执行任何操作?@Umar3x,不幸的是,我目前仅限于Jenkins。我向MS报告了这个问题-他们正在解决这个问题,谢谢你的回答。我问的是如何在构建期间而不是在运行时获取这些值。在构建期间,针对Android的msbuild提供XamarinDroidVersion属性,但对于提供当前用于该构建的Xamarin.iOS、Xamarin.Forms版本的iOS构建或表单构建,没有类似的值。我想到的一件事是从Xamarin.iOS.dll(生成过程中默认路径可用)获取此文件,并解析Xamarin.Forms的packages.config。@awattar,你能告诉我为什么在生成项目时要获取当前版本和生成吗?有几个原因。最基本的方法是在构建机器上获取这个in-build日志,以验证构建的内容、时间以及主要程序集。如果Xamarin.Android版本能够公开和打印这些最基本的值,那么iOS和Forms版本也应该如此。如果您希望使用AppCenter,可以使用一个简单的sh脚本在构建过程中触发。他们在appcenter上做得很好!您可以对脚本的预构建部分执行任何操作?@Umar3x,不幸的是,我目前仅限于Jenkins。我向MS报告了这个问题-他们正在处理这个问题