web-dev-qa-db-fra.com

Afficher la version du projet dans l'application ASP.NET MVC Core (RC2)

Comment afficher la version de l'application à partir de project.json? J'utilise gulp-bump vers la version à incrémentation automatique, mais je ne peux pas afficher la version récente. Voici ce que j'essaye:

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

Cela ne fonctionne pas, il affiche "1.0.0 "au lieu de la valeur réelle de project.json

J'ai également essayé cela, mais il semble que cela ne fonctionne plus dans RC2:

@inject Microsoft.Extensions.PlatformAbstractions.IApplicationEnvironment appEnv
My version number is @(appEnv.ApplicationVersion)
18
vmg

Selon cette annonce , IApplicationEnvironment n'existe plus.

Vous pouvez toujours accéder au ApplicationVersion de façon statique en utilisant:

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

Ça marche pour moi. Ma project.json ressemble à ça:

{
    "version": "1.0.0.2",
    // all the rest
}

Et dans ma vue d'index, j'ai la ligne suivante en haut:

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

Et je reçois correctement 1.0.0.2 dans la sortie. Et lorsque je modifie cette valeur et redémarre (crée) l'application, la nouvelle version y est affichée.

20
poke

Depuis Platform Abstractions ont été fournis avec ASP.NET Core 1 et a été supprimé d'ASP.NET Core 2 et plus, si vous utilisez la version 2 ou supérieure, vous devez remplacer cette ligne:

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

avec celui-ci:

System.Reflection.Assembly.GetEntryAssembly().GetName().Version

comme spécifié dans la section "Remplacement de l'utilisation de l'API" de la page liée précédente.

19
Luca

J'ai utilisé une approche différente, comme indiqué dans cette réponse qui m'a donné une version SemVer (1.0.0) qui est en fait dans mon project.json et non 1.0.0.0, qui est retourné par la réponse acceptée. Le code serait donc:

var runtimeVersion = typeof(Startup)
            .GetTypeInfo()
            .Assembly
            .GetCustomAttribute<AssemblyInformationalVersionAttribute>()
            .InformationalVersion;

Il renvoie également les versions suffixées correctes, c'est-à-dire quelque chose comme "2.0.1-dev01"

12
Ilya Luzyanin

Cela a fonctionné pour moi pour .NET Core 2.0.5.

Code:

var assemblyVersion = System.Reflection.Assembly.GetEntryAssembly().GetCustomAttribute<System.Reflection..AssemblyInformationalVersionAttribute>().InformationalVersion;
Console.WriteLine(assemblyVersion);

myproject.csproj

<PropertyGroup>
    <VersionPrefix>1.0.0.1</VersionPrefix>
    <VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>

les sorties

1.0.0.1-alpha
7
sabbour

Si vous vous retrouvez ici et que vous essayez de gérer les versions du projet via la version de la solution.

Ajout d'un Directory.Build.props fichier dans le répertoire de la solution contenant:

<Project>
  <PropertyGroup>
    <VersionPrefix>1.2.3</VersionPrefix>
  </PropertyGroup>
</Project>

Définira la propriété Version de tous les projets inclus qui "obtiennent la version de la solution parente".

Pas idéal, mais il vous permet de gérer la version en un seul endroit pour une solution multi-projets verrouillée.

1
saarrrr