我想使用内部版本号附加我们的应用程序版本。例如,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")]
为什么会这样?
答案 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中接受编译器的“ *”。