Указанная строка версии не соответствует требуемому формату - major [.minor [.build [.revision]]]
Я хочу добавить нашу версию приложения с номером сборки. Например, 1.3.0.201606071
.
При установке этого в AssemblyInfo я получаю следующую ошибку компиляции:
Ошибка CS7034 Указанная строка версии не соответствует требуемому формату - 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")]
Почему это происходит?
Ответы
Ответ 1
Максимальное значение для любой из частей составляет 65534, как вы читаете здесь. Это ограничение, создаваемое операционной системой, поэтому даже не характерно для.NET. Windows помещает номера версий в два целых числа, которые вместе образуют четыре беззнаковых шорт.
Добавление к нему некоторых метаданных (для опции *
я думаю) делает максимально допустимое значение UInt16.MaxValue - 1 = 65534
(спасибо Гэри Уокеру за замечать):
Все компоненты версии должны быть целыми числами, большими или равными 0. Метаданные ограничивают основные, второстепенные, UInt16.MaxValue - 1
и ревизионные компоненты для сборки максимальным значением UInt16.MaxValue - 1
. Если компонент превышает это значение, возникает ошибка компиляции.
Ваш 201606071
превышает этот предел.
Ответ 2
Это потому, что каждый номер в версии - это сокращение ! Это жаль.
Ответ 3
Это ограничение применяется только к версии Assembly и File, поэтому, если вы используете.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
В файле.csproj необходимо установить Definistic в false. Затем принимает компилятор '*' в сборке или редакции.