2013-03-19 2 views
30

Я пытаюсь установить мой AssemblyVersion и AssemblyFileVersion атрибутов в моем проекте так:CS1607: версия, указанная для «версии файла» не в обычном формате «major.minor.build.revision» в .NET

[assembly: AssemblyVersion("3.0.*")] 
[assembly: AssemblyFileVersion("3.0.*")] 

но я получаю следующее предупреждение:

CS1607: -. 3,0 * поколения Монтаж версии указан для «версии файла» не в нормальных «major.minor. формат build.revision

На AssemblyVersionAttribute Class страницы в MSDN является следующее:

Вы можете указать все значения, или вы можете принять сборку по умолчанию номер, номер версии, или как с помощью звездочки (*) , Например, для модели [сборка: AssemblyVersion ("2.3.25.1")] указывает 2 как , 3 в качестве младшей версии 25 в качестве номера сборки и 1 в качестве номера ревизии. Номер версии, такой как [сборка: AssemblyVersion ("1.2. *")] Определяет 1 как основную версию, 2 как второстепенную версию и принимает значения по умолчанию для сборки и ревизии . Номер версии, такой как [сборка: AssemblyVersion ("1.2.15. *")] Указывает 1 как главную версию , 2 в качестве младшей версии, 15 в качестве номера сборки и принимает номер версии по умолчанию.

Обратите внимание на жирный раздел. Кто-нибудь знает, почему [assembly: AssemblyVersion("3.0.*")] (из моего проекта) недействителен, но действителен ли [assembly:AssemblyVersion("1.2.*")] (из примера MSDN)?

В частности, мне любопытно узнать, могу ли я начать с ненулевого основного номера, поскольку приложение, которое я пишу, является версией 3 программы.

ОБНОВЛЕНИЕ >>> Извините, это похоже на ответ в другом посте ... пожалуйста, проголосуйте, чтобы закрыть его, спасибо.

+1

возможно дубликат [AssemblyInfo информация версии Звездочки] (http://stackoverflow.com/questions/10229711/assemblyinfo-version-information-asterisks) –

ответ

62

Вы предполагаете, что проблема с этой линии:

[assembly: AssemblyVersion("3.0.*")] 

, когда он на самом деле с этим один:

[assembly: AssemblyFileVersion("3.0.*")] 

Как the accepted answer to the question that you say is not a duplicate of this one говорит:

Для AssemblyFileVersionAttribute вы не можете использовать специальный символ *, поэтому вам необходимо предоставить полный и действительный номер версии.

Это * синтаксис работает только с атрибутом AssemblyVersion. Он не работает с атрибутом AssemblyFileVersion.

Есть два пути для достижения результатов, которые Вы, вероятно, пожелаете здесь:

  1. Просто опускает AssemblyFileVersion атрибут в целом. Это приведет к тому, что информация о версии файла сборки будет автоматически отделена от атрибута AssemblyVersion (который является , поддерживает синтаксис *).

  2. Выложите большие пушки и установите Build Version Increment add-in, который предлагает вам больше вариантов увеличения версии, чем вы можете встряхнуть палку.

+0

Спасибо, вы совершенно правы ... как-то я полностью пропустил эта строка в другом посте, я вернулся сюда, чтобы удалить этот пост, но вы уже ответили на него, поэтому я не могу. Я проголосовал, чтобы закрыть его. – Sheridan

+0

Обновление об этом, AssemblyFileVersion принимает символ '*' в .NET 4 и далее. –

+2

@Vince В Visual Studio 2010 это не работает, будь то таргетинг .NET 4 или любая другая версия. Вы имеете в виду, что он работает с VS 2012? Это связано с версией компилятора/компоновщика, а не с целевой структурой. –