it-swarm.com.de

Die angegebene Versionszeichenfolge entspricht nicht dem erforderlichen Format - major [.minor [.build [.revision]]]

Ich möchte unsere Anwendungsversion mit der Build-Nummer anhängen. Zum Beispiel 1.3.0.201606071.

Wenn Sie dies in der AssemblyInfo einstellen, erhalte ich den folgenden Kompilierungsfehler:

Fehler CS7034 Die angegebene Versionszeichenfolge entspricht nicht der Erforderliches Format - Major [.Min. [.build [.revision]]]

Montageinfo:

[Assembly:System.Reflection.AssemblyFileVersionAttribute("1.0.0.201606071")]
[Assembly:System.Reflection.AssemblyVersionAttribute("1.0.0.201606071")]
[Assembly:System.Reflection.AssemblyInformationalVersionAttribute("1.0.0.201606071")]

Warum sollte das passieren?

35
davenewza

Der Höchstwert für einen der Teile beträgt 65534, wie Sie hier lesen. Dies ist eine Begrenzung, die vom Betriebssystem vorgegeben wird, also nicht einmal spezifisch für .NET. Windows setzt die Versionsnummern in zwei Ganzzahlen, die zusammen vier vorzeichenlose Kurzschlüsse bilden.

Durch Hinzufügen einiger Metadaten (für die *-Option denke ich) wird der maximal zulässige Wert UInt16.MaxValue - 1 = 65534 festgelegt (Danke an Gary Walker für das Beachten):

Alle Komponenten der Version müssen Ganzzahlen größer oder gleich 0 sein. Metadaten schränken die Haupt-, Neben-, Build- und Revisionskomponenten einer Assembly auf einen Höchstwert von UInt16.MaxValue - 1 ein. Wenn eine Komponente diesen Wert überschreitet, tritt ein Kompilierungsfehler auf.

Ihr 201606071 überschreitet diese Grenze.

37
Patrick Hofman
7
davenewza

Wenn Sie auf netcoreapp2.0 Zielen und AssemblyInfo.cs Überhaupt nicht haben, können Sie dies beheben

Fehler CS7034: Die angegebene Versionszeichenfolge entspricht nicht dem erforderlichen Format

indem Sie dies in Ihre .csproj - Datei einfügen:

<PropertyGroup>
  <GenerateAssemblyInfo>False</GenerateAssemblyInfo>
  <Deterministic>False</Deterministic>
</PropertyGroup>
4
Dmitry Pavlov

In der .csproj-Datei müssen Sie Deterministic auf false setzen. Dann akzeptiert der Compiler ein '*' im Build oder in der Revision.

0
HRolle

Diese Einschränkung gilt nur für die Assembly- und Dateiversion. Wenn Sie .Net Core 2.x verwenden, können Sie diese Einschränkung umgehen, indem Sie in csproj eine eigene Version einstellen.

</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