Мне было просто интересно, как я могу автоматически увеличивать сборку (и версию?) Моих файлов с помощью Visual Studio (2005).
Если я посмотрю свойства, скажем C:\Windows\notepad.exe
, на вкладке Версия отображается «Версия файла: 5.1.2600.2180». Я хотел бы получить эти классные цифры и в версии моей библиотеки, а не в версии 1.0.0.0, что, правда, немного скучно.
Я попробовал несколько вещей, но это не похоже на функциональность из коробки, или, может быть, я просто смотрю в неправильном месте (как обычно).
Я работаю в основном с веб-проектами ....
Я посмотрел на оба:
- http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx
- http://www.codeproject.com/KB/dotnet/build_versioning.aspx
и я не мог поверить, что столько усилий, чтобы сделать что-то, является стандартной практикой.
РЕДАКТИРОВАТЬ: он не работает в VS2005, насколько я могу сказать ( http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx )
Ответы:
В Visual Studio 2008 работает следующее.
Найдите файл AssemblyInfo.cs и найдите эти 2 строки:
Вы можете попробовать изменить это на:
Но это не даст вам желаемого результата, вы получите версию продукта 1.0. * И версию файла 1.0.0.0 . Не то, что вы хотите!
Однако, если вы удалите вторую из этих строк и просто получите:
Затем компилятор установит версию файла равной версии продукта, и вы получите желаемый результат автоматически увеличивающейся версии продукта и файла, которые синхронизированы. Например, 1.0.3266.92689
источник
откройте файл AssemblyInfo.cs и измените
в
Вы можете сделать это в IDE, перейдя в проект -> свойства -> информация о сборке
Это, однако, только позволит вам автоматически увеличивать версию сборки и даст вам
окно сообщения, если вы попытаетесь поместить * в поле версии файла.
Так что просто откройте файл assemblyinfo.cs и сделайте это вручную.
источник
Другим вариантом изменения номеров версий в каждой сборке является использование задачи Версия MSBuild.Community.Tasks . Просто скачайте их установщик, установите его, затем адаптируйте следующий код и вставьте его
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
в свой.csproj
файл:Примечание. Адаптируйте свойство StartDate к вашей локали. В настоящее время он не использует инвариантную культуру.
Для третьей сборки 14 января 2010 года это создает
VersionInfo.cs
с этим содержанием:Затем этот файл должен быть добавлен в проект (посредством добавления существующего элемента ),
AssemblyVersion
аAssemblyFileVersion
строки и должны быть удалены изAssemblyInfo.cs
.Различные алгоритмы для изменения компонентов версий описаны
$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.chm
и свойство версии .источник
Я придумал решение, похожее на христианское, но вне зависимости от задач сообщества MSBuild, это не вариант для меня, так как я не хочу устанавливать эти задачи для всех наших разработчиков.
Я генерирую код и компилирую в сборку и хочу автоматически увеличивать номера версий. Однако я не могу использовать трюк VS 6.0. * AssemblyVersion, поскольку он автоматически увеличивает номера сборки каждый день и нарушает совместимость со сборками, которые используют более старый номер сборки. Вместо этого я хочу иметь жестко запрограммированную AssemblyVersion, но с автоматическим приращением AssemblyFileVersion. Я достиг этого, указав AssemblyVersion в AssemblyInfo.cs и сгенерировав VersionInfo.cs в MSBuild, например:
Это создаст файл VersionInfo.cs с атрибутом Assembly для AssemblyFileVersion, в котором версия соответствует схеме YY.MM.DD.TTTT с датой сборки. Вы должны включить этот файл в свой проект и построить с ним.
источник
[System.DateTime]::Now
в одно, иначе есть условие гонки, которое может привести к тому, что старый номер сборки будет использоваться при строительстве около полуночи.DateTime.ToString
для демонстрационных целей, или есть определенная причина?Установите надстройку версии сборки . Это дает вам больше контроля, чем опция *.
источник
Чтобы получить номера версий, попробуйте
Чтобы установить номер версии, создайте / отредактируйте AssemblyInfo.cs
Кроме того, в качестве примечания, третье число - это количество дней с 1 февраля 2000 года, а четвертое - половина общего количества секунд в дне. Так что если вы компилируете в полночь, это должно быть ноль.
источник
Существует визуальное расширение студии Automatic Versions, которое поддерживает Visual Studio (2012, 2013, 2015) 2017 и 2019.
Скриншоты
источник
Установка * в номере версии в AssemblyInfo или в свойствах проекта, как описано в других статьях, не работает со всеми версиями Visual Studio / .NET.
Afaik не работал в VS 2005 (но в VS 2003 и VS 2008). Для VS 2005 вы можете использовать следующее: Автоинкремент Сборка версии Visual Studio 2005 и номер редакции во время компиляции .
Но имейте в виду, что автоматическое изменение номера версии не рекомендуется для сборок со строгим именем. Причина в том, что все ссылки на такую сборку должны обновляться каждый раз, когда ссылочная сборка перестраивается из-за того, что ссылки на сборки со строгими именами всегда являются ссылкой на конкретную версию сборки. Сами Microsoft изменяют номер версии сборок .NET Framework только в случае изменений в интерфейсах. (NB: я все еще ищу ссылку в MSDN, где я прочитал это.)
источник
Получить инкрементную (DateTime) информацию в свойство AssemblyFileVersion, преимущество которого состоит в том, что она не нарушает никаких зависимостей.
Основываясь на решении Boog (у меня не сработало, может быть из-за VS2008?), Вы можете использовать комбинацию события перед сборкой, создавая файл, добавляя этот файл (включая свойства его версии), а затем используя способ считывания эти значения снова. Это..
Pre-Build-Event:
Включите полученный файл VersionInfo.cs (подпапка «Свойства») в ваш проект
Код для получения даты назад (годы до секунд):
Не очень удобно .. кроме того, я не знаю, создает ли он много принудительных перестроек (так как файл всегда изменяется).
Например, вы можете сделать его умнее, если обновляете файл VersionInfo.cs только каждые несколько минут / часов (используя временный файл, а затем копируете / перезаписываете настоящий VersionInfo.cs, если обнаруживается достаточно большое изменение). Я сделал это однажды довольно успешно.
источник
Установите номер версии на «1.0. *», И он будет автоматически заполнять последние два числа с датой (в днях с некоторой точки) и временем (полсекунды с полуночи)
источник
Он находится в свойствах вашего проекта в разделе « Опубликовать».
(~ http://screencast.com/t/Vj7rhqJO )
источник
Cake поддерживает исправление файлов AssemblyInfo. С тортом в руках у вас есть бесконечные способы реализовать автоматическое увеличение версии.
Простой пример увеличения версии, как это делает компилятор C #:
Вот:
Обратите внимание, что вы можете исправлять не только версии, но и всю другую необходимую информацию .
источник
Перейти к проекту | Свойства, затем Информация о сборке, а затем Версия сборки и поместите * в поле последнего или второго до последнего (вы не можете автоматически увеличивать компоненты Major или Minor).
источник
Используйте задачу AssemblyInfo из проекта Задачи сообщества MSBuild ( http://msbuildtasks.tigris.org/ ) и интегрируйте ее в свой файл .csproj / .vbproj.
У него есть несколько опций, в том числе один, чтобы привязать номер версии к дате и времени суток.
Рекомендуемые.
источник
На данный момент, для моего заявления,
возвращается
ver = 1.0.3251.27860
Значение 3251 - это количество дней с 01.01.2000. Я использую его, чтобы поместить дату создания версии на заставку моего приложения. Имея дело с пользователем, я могу задать дату создания, с которой легче общаться, чем какой-либо длинный номер.
(Я работаю в одиночном отделении, поддерживаю небольшую компанию. Этот подход может не сработать для вас.)
источник
Изменение AssemblyInfo работает в VS2012. Кажется странным, что в Visual Studio больше нет такой поддержки, можно подумать, что это была основная часть процесса сборки / выпуска.
источник
Как получить версию
{major}.{year}.1{date}.1{time}
Это своего рода эксперимент, но мне это нравится. Вдохновленный Джеффом Этвудом @ CodingHorror ( ссылка ).
Результирующий номер версии становится
1.2016.10709.11641
(имеется в виду 2016-07-09 16:41), что позволяет1
с)Добавьте новый элемент в ваш проект, выберите «Основные» -> «Текстовый шаблон», назовите его как-нибудь так
CustomVersionNumber
и (где применимо) закомментируйтеAssemblyVersion
иAssemblyFileVersion
вProperties/AssemblyInfo.cs
.Затем при сохранении этого файла или создании проекта будет восстановлен
.cs
файл, расположенный в качестве вложенного элемента в созданном.tt
файле.источник
Я создал приложение для автоматического увеличения версии файла.
добавьте следующую строку в командную строку события pre-build
C: \ temp \ IncrementFileVersion.exe $ (SolutionDir) \ Properties \ AssemblyInfo.cs
Постройте проект
Для простоты приложение выдает сообщения только в случае ошибки, чтобы убедиться, что она работает нормально, вам нужно проверить версию файла в «Сведениях о сборке».
Примечание: вам нужно будет перезагрузить решение в Visual Studio для кнопки «Информация о сборке», чтобы заполнить поля, однако ваш выходной файл будет иметь обновленную версию.
Для предложений и запросов, пожалуйста, напишите мне по адресу telson_alva@yahoo.com
источник
В Visual Studio 2019
Мне не хватило добавления
При сборке выкидывает эту ошибку
Решение
Формат был окончательно принят после того, как я установил ,
Deterministic
чтобыFalse
вproject.csproj
Редактировать:
По какой-то причине установка
Deterministic
наFalse
перепутались мой конфигурационный файл загрузить его и сохранить его в разных местах.Временное решение:
Я установил событие после сборки, чтобы увеличить номер редакции:
Пакетный сценарий событий после сборки
Это вызывает сценарий powershell с именем,
autoincrement_version.ps1
передавая в качестве аргумента путьAssemblyInfo.cs
Скрипт Poweshell
Он автоматически увеличивает номер ревизии с помощью Regex
источник
Возможно, для этой задачи вы можете использовать такой код:
и позвоните из загрузки формы.
С помощью этого кода вы можете обновить любую часть информации о файле в AssemblyInfo.cs (но вы должны использовать «стандартную» структуру каталогов).
источник
AssemblyInfoUtil . Бесплатно. Открытый исходный код.
источник
Я использую этот подход https://stackoverflow.com/a/827209/3975786 , помещая шаблон T4 в «Элементы решения» и используя его с «Добавить как ссылку» в каждом проекте.
источник
Возможно, уже слишком поздно, чтобы ответить здесь, но надеюсь, что это решит чью-то беспокойную проблему
Автоматический способ изменить версию сборки всех ваших проектов с помощью скрипта PowerShell. Эта статья решит многие ваши проблемы.
источник
Каждый раз, когда я делаю сборку, она автоматически увеличивает наименьшую значащую цифру.
Я понятия не имею, как обновить остальные, но вы должны хотя бы увидеть это уже ...
источник
Для любого, кто использует Tortoise Subversion, вы можете привязать один из ваших номеров версий к номеру ревизии Subversion вашего исходного кода. Я нахожу это очень полезным (Аудитору это тоже нравится!). Вы делаете это, вызывая утилиту WCREV в вашей предварительной сборке и генерируя AssemblyInfo.cs из шаблона.
Если ваш шаблон называется AssemblyInfo.wcrev и находится в обычном каталоге AssemblyInfo.cs, а черепаха находится в каталоге установки по умолчанию, то ваша команда Pre-Build выглядит следующим образом (NB All в одной строке):
Файл шаблона будет содержать строку замены токена wcrev: $ WCREV $
eg
Примечание.
Поскольку ваш AssemblyInfo.cs теперь генерируется, вы не хотите, чтобы его версия контролировалась.
источник