2016-04-14 23 views
1

"project.json" dosyası kullanan bir DNX uygulamasında, "project.json" dosyasındaki "version" özelliğinin değerini okumak için bir yol var mı ?Project.json dışındaki sürümün değerini öğrenin

Geçerli HTTP yanıtına bir şeyler yazan bir kitaplık yazıyorum ve uygulamanın sürümünü orada göstermek istiyorum.

Bunun nasıl yapılabileceği konusunda herhangi bir yardım çok takdir edilmektedir. Ben dnx yerine kurulan yeni dotnet cli kullanarak yaptım

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

ama birlikte çalışması gerekir: Eğer inşa sırasında (başka bir şekilde veya) sürüm özelliğini ayarlarsanız

+0

Okuyamadığınız böylece project.json olmayacak uygulamayı yayınlarsanız: İlk yolu özel veri (öznitelik mevcut olup olmadığını kontrol etmelidir) niteliklerini çalışma zamanında. Belki derleme sürümü özniteliğini derleme sırasında ayarlayın ve uygulama çalışırken bunu döndürün? – Pawel

+0

Bu sanırım bir DNX uzaklaşmasında işe yaramıyor. Get Giriş Meclisi tanınmadı. En azından DNX Çekirdeğinde değil, uygulamamın bunu desteklemesi gerekiyor. – Complexity

+0

Muhtemelen nasıl yaptığınıza bağlı. Belki GetExecutingAssembly kullanabilirsiniz? – Pawel

cevap

1

böyle yapabilirsiniz dnx dnxcore50 da.

0

Sınıf Kitaplığı veya ASP.NET uygulaması mı yazıyorsunuz?

Bir sınıf Kitaplığı'ndaysa, sürüm dizesini, sürümü kapmak için çalışma zamanı sırasında okuduğunuz bir kaynak dosyasına kopyalayabilirsiniz. Bir Startup ve IoC'nin güzelliğini elde edemediğiniz için sınıf kütüphaneleriyle bu tür bir şey yapmak çok zor.

ASP.NET, o zaman sadece senin appsettings.json konfigürasyonuna bir sürümü (veya mağaza ayarlarına özel bir json dosyası) ekleyin ve başlangıçta onu okumak ise: eğer bunu yapmanın http://docs.asp.net/en/latest/fundamentals/configuration.html

0

multipe yolları Bir web uygulamasında çalışan, bir sınıf kütüphanesi değil.

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

İkinci yol

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