2016-04-14 7 views
1

"project.json"ファイルを使用するDNXアプリケーションでは、 "project.json"ファイルから "version"プロパティの値を読み取る方法があります?project.jsonからバージョンの値を取得

私は、現在のHTTPレスポンスに何かを書くライブラリを作成しています。そこにアプリケーションのバージョンを示したいと思います。

これがどのようにできるかについてのお手伝いは非常に高く評価されます。

+0

project.jsonができません:カスタムデータ(属性が利用可能であるかどうかを確認すべきである)属性 最初の方法それは実行時に。ビルド時にアセンブリバージョン属性を設定し、アプリケーションの実行中にこれを返すことがありますか? – Pawel

+0

これは私が推測するDNXの証拠では機能しません。エントリを取得アセンブリが認識されません。少なくとも私のappdoesがそれをサポートする必要がある間、DNX Coreにはありません。 – Complexity

+0

これはおそらくあなたのやり方によって異なります。たぶんGetExecutingAssemblyを使うことができますか? – Pawel

答えて

1

ビルド(またはその他の方法で)中にバージョン属性を設定する場合は、そのようにこれを行うことができます:

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

私はDNXを交換しているが、それはで動作するはずの新しいDOTNETのCLIを使用してそれをやりましたdnx dnxcore50も同様である。

0

クラスライブラリまたはASP.NETアプリケーションを作成していますか?

クラスライブラリの場合、バージョン文字列を実行時に読み込んだリソースファイルにコピーしてバージョンを取得できます。あなたがスタートアップとIoCの美しさを得ないので、クラスライブラリでこの種のことをするのは難しいことです。

ASP.NETは、その後、ちょうどあなたのappsettings.json構成へのバージョン(またはストアの設定にカスタムJSONファイル)を追加し、起動時にそれを読み込む場合:あなたがある場合は、これを行うためのhttp://docs.asp.net/en/latest/fundamentals/configuration.html

0

Multipeの方法クラスライブラリではなくWebアプリケーションで実行されます。あなたがアプリケーションを公開する場合、あなたが読むことはできませんので

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

第二の方法

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