Search code examples
c#reflectionwindows-8windows-store-apps

How can I get the executing assembly version information in a Windows Store App?


While porting an application to the Windows Store, I noticed the .NETCore Framework does not include:

System.Reflection.Assembly.GetExecutingAssembly()

I used this to get the version information for display on the menu screen. Is there a replacement or am I forced to store the information elsewhere for retrieval?

EDIT:

I've also found that I can extract a version number out of typeof(MyType).AssemblyQualifiedName but that seems bad.


Solution

  • I am using this :

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

    And if you want assembly version you can get it from Version attribute :

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

    For example using main App's assembly :

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