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)
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.
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.
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"
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
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.