【问题标题】:How to get the version of a Windows Phone 8.1 app in code?如何在代码中获取 Windows Phone 8.1 应用程序的版本?
【发布时间】:2014-09-18 14:24:05
【问题描述】:

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

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

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

GetExecutingAssembly() 在 Windows Phone 8.1 中不可用。

还有其他方法吗?

【问题讨论】:

  • 不是重复的。这适用于 Windows Phone 8.0。 8.0 和 8.1 之间存在很大差异,并且接受的答案在 Windows Phone 8.1 中不起作用。
  • 使用 System.Reflection; ... typeof(Class).GetTypeInfo().Assembly

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


【解决方案1】:

是这样的:

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);

【讨论】:

【解决方案2】:

由于某种原因,上面的答案不适用于我的项目(可能是因为我正在运行 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 );

举个例子,虽然我的AssemblyInfo.cs 上有[assembly: AssemblyVersion( "0.1.*" )],这将为我生成一个构建和修订号,使用Package.Current.Id.Version 我会得到0.1.0.0,而使用我上面描述的方法我获取0.1.5918.18756

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多