如何在Windows Store应用程序中获取执行程序集版本信息?

13

在将应用程序移植到Windows商店时,我注意到.NET Core框架不包括:

System.Reflection.Assembly.GetExecutingAssembly()

我使用它来获取版本信息以在菜单屏幕上显示。是否有替代方法,还是必须在其他地方存储信息以进行检索?

编辑:

我还发现可以从typeof(MyType).AssemblyQualifiedName中提取版本号,但那似乎不好。


1个回答

25

我正在使用这个:

public string GetApplicationVersion()
{
  var ver = Windows.ApplicationModel.Package.Current.Id.Version;
  return ver.Major.ToString() + "." + ver.Minor.ToString() + "." + ver.Build.ToString() + "." + ver.Revision.ToString();
}

如果您需要获取程序集版本号,可以从“Version”属性中获取:

public string GetAssemblyVersion(Assembly asm)
{
  var attr = CustomAttributeExtensions.GetCustomAttribute<AssemblyFileVersionAttribute>(asm);
  if (attr != null)
    return attr.Version;
  else
    return "";
}

例如使用主应用程序的组件:

Assembly appAsm = typeof(App).GetTypeInfo().Assembly;
string assemblyVersion = GetAssemblyVersion(appAsm);

这基于程序包版本,我猜这是一种方式,但我的当前设置依赖于程序集信息文件中的默认构建/修订值。如果我找不到其他方法,我会接受这个答案。 - Justin Skiles
@N-ate 抱歉,不知道。 - Antonio Bakula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接