2016-09-22 20 views
11

RC.xで動作していたものはもうありません。ASP.NET Core 1.0.0 Webアプリケーションのプロジェクトバージョンを表示

私はこれらを試してみました:

  1. PlatformServices.Default.Application.ApplicationVersionを。

  2. typeof(コントローラ).GetTypeInfo()。Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>().Version;

  3. Assembly.GetEntryAssembly()。GetName()。Version.ToString();

彼らはproject.json: "version": "1.0.0-*"

でこれを持っdotnet publish --version-suffix 9を実行した後でなければなりません代わり1.0.0-9のすべての戻り1.0.0.0は、基本的には、それらが結合した画像から、「ファイルのバージョンを」私を与える代わりに " dotnet publishが実際に変わっているようです。バージョン1.xの場合

enter image description here

答えて

18

:バージョン2.0.0の場合

Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion; 

この属性は醜い何かが含まれています 2.0.0 built by: dlab-DDVSOWINAGE041ので、このいずれかを使用します。

typeof(RuntimeEnvironment).GetTypeInfo().Assembly.GetCustomAttribute<AssemblyFileVersionAttribute>().Version; 
+0

ありがとう、それは非常に役に立ちます。なぜasp.netのコアチームが1- *の代わりに1.0.0。*をサポートしていなかったのかは私の外にあります。 Microsoft .NETアセンブリのバージョン番号は、常にint.int.int.intであり、プログラム上の観点から意味があります。ビルド#で文字列をサポートする必要はなく、他の問題につながります。 – evermeire

+0

代わりに、System.Reflection.IntrospectionExtensions.GetTypeInfo( typeof(ArmoredOutputStream) ) .Assembly.GetCustomAttribute (バージョン。 //注:ArmoredOutputStreamは、バージョンが必要なアセンブリ内のクラスです –

+0

エディットは誤解を招く恐れがあります。おそらく、エディタのカスタマイズされた設定が原因です。正解はAssembly.GetEntryAssembly()です。GetCustomAttribute ()。InformationalVersion FileVersionはプレリリースタグを削除します。 –

5

この作品は、のために私も:

@Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationVersion 

これは、<バージョン1.2.3.4または< VersionPrefix> 1.2.3 </VersionPrefixのいずれかのcsprojファイルで動作します。しかしには< VersionSuffix>が再認識されていません。

+6

Nah、これは常に1.0.0.0を返します。 –

+0

それはより良いanswareです。プロジェクトのプロパティで動作します。 (VS2017) – harveyt

関連する問題