Je veux annexer notre version de l'application avec le numéro de build. Par exemple, 1.3.0.201606071
.
Lors du paramétrage dans AssemblyInfo, j'obtiens l'erreur de compilation suivante:
Erreur CS7034 La version spécifiée n'est pas conforme à la chaîne format requis - majeur [.minor [.build [.revision]]]
Informations de montage:
[Assembly:System.Reflection.AssemblyFileVersionAttribute("1.0.0.201606071")]
[Assembly:System.Reflection.AssemblyVersionAttribute("1.0.0.201606071")]
[Assembly:System.Reflection.AssemblyInformationalVersionAttribute("1.0.0.201606071")]
Pourquoi cela arriverait-il?
La valeur maximale pour l'une des parties est 65534, lorsque vous lisez ici . C'est une limite imposée par le système d'exploitation, donc pas même spécifique à .NET. Windows met les numéros de version dans deux entiers, qui forment ensemble quatre courts métrages non signés.
En y ajoutant des métadonnées (pour l'option *
je suppose) rend la valeur maximale autorisée UInt16.MaxValue - 1 = 65534
(Merci à Gary Walker pour avoir remarqué):
Tous les composants de la version doivent être des entiers supérieurs ou égaux à 0. Les métadonnées limitent les composants majeurs, mineurs, de construction et de révision pour un assembly à une valeur maximale de
UInt16.MaxValue - 1
. Si un composant dépasse cette valeur, une erreur de compilation se produit.
Votre 201606071
dépasse cette limite.
C'est parce que chaque numéro de la version est un ushort ! C'est dommage.
Dans le fichier .csproj, vous devez attribuer la valeur false à Déterministe. Puis accepte le compilateur un '*' dans la construction ou la révision.
Cette limitation ne concerne que la version Assembly et File. Par conséquent, si vous utilisez .Net Core 2.x, vous pouvez contourner cette limitation en définissant une version distincte de chaque dans csproj.
</PropertyGroup>
<VersionPrefix>1.1.1.9000001</VersionPrefix>
<VersionSuffix>$(VersionSuffix)</VersionSuffix>
<AssemblyVersion>1.1.1.0</AssemblyVersion>
<FileVersion>1.1.1.0</FileVersion>
</PropertyGroup>