如何在代码中获取Windows Phone 8.1应用程序的版本?

时间:2014-09-18 14:24:06

标签: windows-runtime windows-phone windows-phone-8.1

是否可以在应用程序运行时获取该应用程序的版本?

在Windows桌面应用程序中,我可以按如下方式获取它:

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

但Windows Phone 8.1中没有GetExecutingAssembly()

还有其他办法吗?

2 个答案:

答案 0 :(得分:20)

这是:

PackageVersion pv = Package.Current.Id.Version;
Version version = new Version(Package.Current.Id.Version.Major, 
    Package.Current.Id.Version.Minor, 
    Package.Current.Id.Version.Revision, 
    Package.Current.Id.Version.Build);

答案 1 :(得分:0)

出于某种原因,上面的答案对我的项目不起作用(可能是因为我正在运行Windows Phone 10并且该应用程序是针对Windows Phone 8.1的)。既然有人也可能有这个错误,我会留下我找到的解决方案。

Type
    type = typeof( App );
TypeInfo
    typeInfo = type.GetTypeInfo();
Assembly
    assembly = typeInfo.Assembly;
AssemblyName
    assemblyName = assembly.GetName();
Version
    version = assemblyName.Version;

String
    versionString = String.Format( "{0}.{1}.{2}.{3}",
        version.Major,
        version.Minor,
        version.Build,
        version.Revision );

或者,以简化的方式:

Version
    version = typeof( App ).GetTypeInfo().Assembly.GetName().Version;

String
    versionString = String.Format( "{0}.{1}.{2}.{3}",
        version.Major,
        version.Minor,
        version.Build,
        version.Revision );

举个例子,虽然我的[assembly: AssemblyVersion( "0.1.*" )]上有AssemblyInfo.cs,但我会为Package.Current.Id.Version生成构建和修订号,但我会0.1.0.0 0.1.5918.18756我用上面描述的方法得到<%= render :partial => 'shared/order', :object => @order %> <%- I18n.with_locale('en') do %> <%= render :partial => 'shared/order', :object => @order %> <%- end %>