web-dev-qa-db-fra.com

La chaîne de version spécifiée n'est pas conforme au format requis - major [.minor [.build [.revision]]]

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?

35
davenewza

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.

37
Patrick Hofman
7
davenewza

Dans le fichier .csproj, vous devez attribuer la valeur false à Déterministe. Puis accepte le compilateur un '*' dans la construction ou la révision.

0
HRolle

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>
0
J.D. Cain