73 votes

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

Je veux ajouter la version de notre application au numéro de construction. Par exemple, 1.3.0.201606071 .

Lorsque je configure ce paramètre dans l'AssemblyInfo, j'obtiens l'erreur de compilation suivante :

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

Informations sur l'assemblage :

[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 se produit-il ?

7 votes

Note : AssemblyInformationalVersionAttribute n'a pas de restrictions comme mentionné dans les réponses.

3 votes

Nous avons rencontré le même problème et avons fini par formater notre date comme une version (ex. 2017.12.20.1234 (où 1234 est notre numéro de construction)

81voto

Patrick Hofman Points 22166

La valeur maximale pour l'une ou l'autre des parties est 65534, comme vous l'avez lu ici . Il s'agit d'une limite imposée par le système d'exploitation, qui n'est donc même pas spécifique à .NET. Windows place les numéros de version dans deux entiers, qui forment ensemble quatre shorts non signés.

Ajout de quelques métadonnées (pour le * je suppose) rend la valeur maximale autorisée UInt16.MaxValue - 1 = 65534 (Merci à Gary Walker pour le remarquer) :

Tous les composants de la version doivent être des nombres entiers supérieurs ou égaux à 0. Les métadonnées limitent les composants major, minor, build et revision d'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.

8 votes

Je rencontre ce problème lorsque j'essaie de définir une valeur d'étoile ( 1.0.* ) dans un projet .NET Core avec la nouvelle fonction csproj en ayant défini GenerateAssemblyInfo à false . Des idées ? Je cherche à obtenir l'incrémentation automatique dans les projets .NET Core / Standard de la nouvelle fonction csproj format de fichier.

1 votes

Non, je suis désolé. Veuillez poser une nouvelle question @Shimmy

3 votes

@Shimmy Avez-vous fini par poser cette question ? Qu'avez-vous découvert ?

23voto

Dmitry Pavlov Points 2260

Si vous ciblez netcoreapp2.0 et n'ont pas AssemblyInfo.cs à tout ce que vous pouvez réparer

erreur CS7034 : la chaîne de version spécifiée n'est pas conforme au format requis

en ajoutant ceci dans votre .csproj fichier :

<PropertyGroup>
  <GenerateAssemblyInfo>False</GenerateAssemblyInfo>
  <Deterministic>False</Deterministic>
</PropertyGroup>

12voto

davenewza Points 4765

2 votes

En fait, c'est 65534 et non 65535.

1 votes

8 votes

@PatrickHofman - Oui, un ushort est limité à 65535, mais le le numéro de série est limité à 65534

5voto

HRolle Points 31

Dans le fichier .csproj, vous devez définir Deterministic sur false. Ensuite, acceptez le compilateur un '*' dans le Build ou la Revision.

1voto

J.D. Cain Points 43

Cette limitation ne s'applique qu'à la version de l'assemblage et du fichier. Si vous utilisez .Net Core 2.x, vous pouvez contourner cette limitation en définissant une version distincte de chaque élément dans le csproj.

</PropertyGroup>
    <VersionPrefix>1.1.1.9000001</VersionPrefix>
    <VersionSuffix>$(VersionSuffix)</VersionSuffix>
    <AssemblyVersion>1.1.1.0</AssemblyVersion>
    <FileVersion>1.1.1.0</FileVersion>
</PropertyGroup>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X