2016-04-14 18 views
1

In einer DNX-Anwendung, die eine Datei "project.json" verwendet, gibt es eine Möglichkeit, den Wert der Eigenschaft "version" aus der Datei "project.json" zu lesen ?Wert der Version aus project.json abrufen

Ich schreibe eine Bibliothek, die etwas in die aktuelle HTTP-Antwort schreibt, und ich möchte die Version der Anwendung dort zeigen.

Jede Hilfe, wie dies getan werden kann, wird sehr geschätzt.

+0

Wenn Sie die Anwendung veröffentlichen die project.json nicht da sein wird, so dass Sie nicht lesen können es zur Laufzeit. Vielleicht setzen Sie das Assemblyversionsattribut während des Builds und geben dieses zurück, wenn die Anwendung ausgeführt wird? – Pawel

+0

Dies funktioniert nicht in einer DNX-Umgebung, denke ich. Get Entry Assembly wird nicht erkannt. Zumindest nicht im DNX-Core, während meine App es unterstützen muss. – Complexity

+0

Es hängt wahrscheinlich davon ab, wie Sie es tun. Vielleicht können Sie GetExecutingAssembly verwenden? – Pawel

Antwort

1

Wenn Sie die Version Attribut während Build (oder auf andere Weise) einstellen können Sie dies so tun:

using System; 
using System.Reflection; 

[assembly:AssemblyVersionAttribute("1.2.3")] 

namespace Test 
{ 
    class Program 
    { 
     public static void Main() 
     { 
      var assembly = typeof(Program).GetTypeInfo().Assembly; 
      var name = assembly.GetName(); 

      Console.WriteLine($"{name.Name}: {name.Version}"); 
     } 
    } 
} 

Ich habe es den neuen Dotnet cli verwendet, die dnx ersetzt wird, aber es sollte funktionieren mit dnx dnxcore50 auch.

0

Schreiben Sie eine Klassenbibliothek oder eine ASP.NET-Anwendung?

Wenn Sie eine Klassenbibliothek verwenden, können Sie die Versionszeichenfolge in eine Ressourcendatei kopieren, die Sie während der Laufzeit zum Abrufen der Version lesen. Es ist ziemlich schwierig, so etwas mit Klassenbibliotheken zu tun, da man nicht die Schönheit eines Startups und IoCs bekommt.

Wenn ASP.NET, dann fügen Sie einfach eine Version in Ihrer appsettings.json Konfiguration (oder eine benutzerdefinierte JSON-Datei zu speichern, Einstellungen) und in beim Start eingelesen: http://docs.asp.net/en/latest/fundamentals/configuration.html

0

Mehrfachschweissung Möglichkeiten dies zu tun, wenn Sie läuft in einer Webanwendung, nicht in einer Klassenbibliothek. Erste Möglichkeit benutzerdefinierte Attribute Daten (sollten überprüfen, ob Attribut vorhanden ist):

this.GetType().Assembly.GetCustomAttributesData() 
      .First(x => x.AttributeType.FullName == "System.Reflection.AssemblyInformationalVersionAttribute") 
      .ConstructorArguments[0]; 

Zweiter Weg

 var name = this.GetType().AssemblyQualifiedName; 
     name = name.Substring(name.IndexOf("Version=") + 8); 
     var verion = name.Substring(0, name.IndexOf(", ")); 
Verwandte Themen