2012-11-03 4 views
12

Während eine Anwendung auf dem Windows Store zu portieren, bemerkte ich die .NETCore Rahmen nicht enthalten:Wie kann ich die Ausführungsversionsinformationen in einer Windows Store App abrufen?

System.Reflection.Assembly.GetExecutingAssembly()

Ich habe diese die Versionsinformationen für die Anzeige auf dem Menübildschirm zu gelangen. Gibt es einen Ersatz oder bin ich gezwungen, die Informationen für den Abruf anderweitig zu speichern?

EDIT:

ich auch habe festgestellt, dass ich eine Versionsnummer aus typeof(MyType).AssemblyQualifiedName extrahieren kann, aber das scheint schlecht.

+0

mögliches Duplikat von [System.Reflection.Assembly.GetExecutingAssembly() in WinRT] (http://stackoverflow.com/questions/7451703/system-ref lection-assembly-getexecutingassembly-in-winrt) –

Antwort

24

ich dies mit:

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

Und wenn Sie Montage-Version möchten, können Sie es von Version Attribut erhalten:

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

Zum Beispiel Hauptbaugruppe App mit:

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

Dies basiert auf der Paket-Version, was eine Möglichkeit ist, aber meine aktuelle Konfiguration basiert auf den Standardwerten von Build/Revision in der Datei assemblyinfo. Wenn ich keinen anderen Weg finde, werde ich diese Antwort akzeptieren. –

+0

aktualisierte meine Antwort –

Verwandte Themen