指定的版本字符串不符合所需的格式 - 主要[.minor [.build [.revision]]]

时间:2016-06-21 09:56:41

标签: c# .net assemblyinfo

我想使用内部版本号附加我们的应用程序版本。例如,1.3.0.201606071

在AssemblyInfo中设置它时,我收到以下编译错误:

  

错误CS7034指定的版本字符串不符合   所需格式 - 主要[.minor [.build [.revision]]]

装配信息:

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

为什么会这样?

5 个答案:

答案 0 :(得分:39)

当您阅读here时,任一部分的最大值为65534。这是操作系统提出的限制,因此甚至不特定于.NET。 Windows将版本号放入两个整数,它们共同形成四个无符号短路。

Adding some metadata to it(我认为*选项)设置允许的最大值UInt16.MaxValue - 1 = 65534(感谢Gary Walker注意):

  

版本的所有组件必须是大于或等于0的整数。元数据将程序集的主要,次要,构建和修订组件限制为最大值UInt16.MaxValue - 1。如果组件超过此值,则会发生编译错误。

您的201606071超出此限制。

答案 1 :(得分:7)

答案 2 :(得分:1)

如果您定位netcoreapp2.0并且完全没有AssemblyInfo.cs,则可以解决

  

错误CS7034:指定的版本字符串不符合要求的格式

通过将其添加到您的.csproj文件中:

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

答案 3 :(得分:0)

此限制仅适用于程序集和文件版本,因此,如果您使用的是.Net Core 2.x,则可以通过在csproj中设置每个版本的单独版本来解决此限制。

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

答案 4 :(得分:0)

在.csproj文件中,您必须将Deterministic设置为false。然后在Build或Revision中接受编译器的“ *”。