Как получить версию продукта?

Есть ли способ получить версию продукта веб-приложения 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;

Другие вопросы по тегам