2016-09-22 3 views
11

Ничего из того, что раньше использовалось в RC.x.Показать версию проекта в веб-приложении ASP.NET Core 1.0.0

Я попытался это:

  1. PlatformServices.Default.Application.ApplicationVersion;

  2. типof (контроллер) .GetTypeInfo(). Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>() .Version;

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

все они возвращаются 1.0.0.0 вместо 1.0.0-9, которые должны быть после выполнения dotnet publish --version-suffix 9, имеющего это в project.json: "version": "1.0.0-*"

В основном они дают мне «версию файла» с прикрепленным изображением вместо " Версия продукта ", которая 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 (). Версия; // Примечание: где ArmoredOutputStream - это класс в сборке, версия которого вы хотите –

+0

. Редактирование вводит в заблуждение и, вероятно, связано с некоторыми настройками из редактора. Правильный ответ: Assembly.GetEntryAssembly(). GetCustomAttribute (). InformationalVersion FileVersion удаляет теги preerelease –

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

Это лучше. Работает с свойствами проекта. (VS 2017) – harveyt