Как получить версию продукта?
Есть ли способ получить версию продукта веб-приложения ASP.NET 5?
Это то, что у меня есть в моем project.json
:
"version": "4.0.0-alpha1"
Как бы я мог получить это из приложения? Я имел обыкновение делать это на старых версиях ASP.NET:
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version
Тем не менее, теперь это просто дает мне 0.0.0.0
все время. Есть идеи?
3 ответа
Внедрите IApplicationEnvironment в любом месте, где вам нужна версия. Так, например, в методе Configure класса Startup:
public void Configure(IApplicationBuilder app,
IApplicationEnvironment applicationEnvironment)
{
app.UseIISPlatformHandler();
app.Run(async (context) =>
{
await context.Response.WriteAsync(applicationEnvironment.ApplicationVersion);
});
}
Источник: "Услуги, доступные при запуске" http://docs.asp.net/en/latest/fundamentals/startup.html
Добавить ссылку на System.Reflection
в вашем файле project.json, если у вас его еще нет.
"dependencies": {
"System.Reflection": "4.1.0-beta-23516" // Current version at time of posting
}
Затем вы можете получить значение из AssemblyInformationalVersionAttribute InformationalVersion
имущество.
private static string GetRuntimeVersion() =>
typeof(SomeClassInYourAssembly)
.GetTypeInfo()
.Assembly
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
.InformationalVersion;
Для приложения командной строки с .NET 6 я обнаружил, что это работает.
(Все, что использует расположение сборки, похоже, не работает, когда приложение публикуется в автономном файле.)
Сначала установите версию (в этом примере: 1.4.3) в свойствах: (ищите «версия»)
Затем используйте этот код, чтобы получить число, которое вы ввели:
using System.Linq;
using System.Reflection;
var version = typeof(Version) // "Version" is the name of any local class
.GetTypeInfo()
.Assembly
.GetCustomAttributes<AssemblyInformationalVersionAttribute>()
.First()
.InformationalVersion;