2016-09-22 103 views
11

以前在RC.x中工作的內容都不再有用。在ASP.NET Core 1.0.0 web應用程序中顯示項目版本

我嘗試了這些:

  1. PlatformServices.Default.Application.ApplicationVersion;

  2. typeof(Controller).GetTypeInfo()。Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>().Version;

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

他們都返回1.0.0.0代替1.0.0-9這應該是在project.json: "version": "1.0.0-*"

基本上有這個dotnet publish --version-suffix 9執行後,他們給我的「文件版本」從附加的圖片,而不是「產品版本「dotnet publish實際上似乎改變了。

enter image description here

回答

18

對於1.x版本:

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

對於版本2.0.0這個屬性包含醜陋的東西: 2.0.0 built by: dlab-DDVSOWINAGE041所以用這一個:

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

謝謝,這是非常有幫助的。爲什麼asp.net核心團隊不支持1.0.0 *,而不是1- *超越了我。 Microsoft .NET程序集的版本號一直是int.int.int.int,從編程的角度來看是有意義的。在構建#中支持字符串不是必需的,會導致其他問題。 – evermeire

+0

而是使用System.Reflection.IntrospectionExtensions.GetTypeInfo( typeof(ArmoredOutputStream) ) .Assembly.GetCustomAttribute ()。Version; //注意:其中ArmoredOutputStream是您想要的版本的程序集中的類 –

+0

編輯具有誤導性,可能是由於編輯器的某些自定義設置。正確答案是Assembly.GetEntryAssembly()。GetCustomAttribute ()。InformationalVersion FileVersion刪除預發佈標籤 –

5

這工作我也是:

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

它可用於csproj文件 - <版本> 1.2.3.4或< VersionPrefix> 1.2.3 </VersionPrefix>。然而,< VersionSuffix>並沒有被識別爲this doc說。

+6

Nah,總是返回1.0.0.0。 –

+0

這是更好的answare。適用於項目屬性。 (VS 2017) – harveyt

相關問題