指定的版本字符串不符合要求的格式 - major[.minor[.build[.revision]]]
The specified version string does not conform to the required format - major[.minor[.build[.revision]]]
我想在我们的应用程序版本中附加内部版本号。例如,1.3.0.201606071
.
在 AssemblyInfo 中进行设置时,出现以下编译错误:
Error CS7034 The specified version string does not conform to the
required format - major[.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")]
为什么会这样?
任何一个部分的最大值都是 65534,如您所见 here。这是操作系统强加的限制,因此甚至不特定于 .NET。 Windows 将版本号放入两个整数中,它们一起形成四个无符号短整数。
Adding some metadata to it (for the *
option I guess) makes the maximum allowed value UInt16.MaxValue - 1 = 65534
(Thanks to Gary Walker注意):
All components of the version must be integers greater than or equal to 0. Metadata restricts the major, minor, build, and revision components for an assembly to a maximum value of UInt16.MaxValue - 1
. If a component exceeds this value, a compilation error occurs.
您的 201606071
超出了此限制。
此限制仅适用于程序集和文件版本,因此如果您使用的是 .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>
在 .csproj 文件中,您必须将 Deterministic 设置为 false。然后在 Build 或 Revision 中接受编译器 '*'。
如果您的目标是 netcoreapp2.0
而根本没有 AssemblyInfo.cs
,您可以修复
error CS7034: The specified version string does not conform to the required format
通过将此添加到您的 .csproj
文件中:
<PropertyGroup>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<Deterministic>False</Deterministic>
</PropertyGroup>
在某些情况下,可能会在项目属性中启用 Treat warnings as errors,而 1.3.0-4011
等版本将导致以下错误:
Properties\AssemblyInfo.cs(35,32): error CS7035: The specified version string does not conform to the recommended format - major.minor.build.revision
因此您可以使用 Visual Studio 更改它,方法是选择 None
或在 .csproj
文件中将 TreatWarningsAsErrors
设置为 false
。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
我想在我们的应用程序版本中附加内部版本号。例如,1.3.0.201606071
.
在 AssemblyInfo 中进行设置时,出现以下编译错误:
Error CS7034 The specified version string does not conform to the required format - major[.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")]
为什么会这样?
任何一个部分的最大值都是 65534,如您所见 here。这是操作系统强加的限制,因此甚至不特定于 .NET。 Windows 将版本号放入两个整数中,它们一起形成四个无符号短整数。
Adding some metadata to it (for the *
option I guess) makes the maximum allowed value UInt16.MaxValue - 1 = 65534
(Thanks to Gary Walker注意):
All components of the version must be integers greater than or equal to 0. Metadata restricts the major, minor, build, and revision components for an assembly to a maximum value of
UInt16.MaxValue - 1
. If a component exceeds this value, a compilation error occurs.
您的 201606071
超出了此限制。
此限制仅适用于程序集和文件版本,因此如果您使用的是 .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>
在 .csproj 文件中,您必须将 Deterministic 设置为 false。然后在 Build 或 Revision 中接受编译器 '*'。
如果您的目标是 netcoreapp2.0
而根本没有 AssemblyInfo.cs
,您可以修复
error CS7034: The specified version string does not conform to the required format
通过将此添加到您的 .csproj
文件中:
<PropertyGroup>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<Deterministic>False</Deterministic>
</PropertyGroup>
在某些情况下,可能会在项目属性中启用 Treat warnings as errors,而 1.3.0-4011
等版本将导致以下错误:
Properties\AssemblyInfo.cs(35,32): error CS7035: The specified version string does not conform to the recommended format - major.minor.build.revision
因此您可以使用 Visual Studio 更改它,方法是选择 None
或在 .csproj
文件中将 TreatWarningsAsErrors
设置为 false
。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>