VS2005: Как автоматически создать номер сборки с датой? - PullRequest
3 голосов
/ 27 февраля 2009

У меня есть приложение .net 2.0 C # в Visual Studio 2005, для которого я хотел бы автоматически сгенерировать правильный номер сборки версии, который должен содержать число, позволяющее угадать дату сборки приложения.
Я пытался использовать инструмент 'AssemblyInfo Task' от Microsoft, но по умолчанию этот инструмент не работает. На сегодняшний день он сгенерирует номер сборки '090227', который превышает максимум 65535 и, следовательно, выдаст ошибку.

Я мог бы также жить с номером сборки, который содержит год и день в году, например 09001 на 1 января 2009 года ...
Знаете ли вы какое-либо решение этой проблемы?
Нужно ли обновлять исходный код для этой «задачи AssemblyInfo» или это можно будет сделать в VS2008 или около того?
Спасибо за вашу помощь.

Ответы [ 3 ]

3 голосов
/ 27 февраля 2009

Вы захотите посмотреть на msbuildtasks . Это открытый набор задач msbuild. У модуля есть задача увеличить / изменить / и т. Д. Номер сборки. Он также очень прост в использовании и очень прост в расширении.

2 голосов
/ 08 апреля 2009

Номер автоматической сборки по умолчанию, сгенерированный VS / C # / msbuild, - это количество дней с 1.1.2000, а номер выпуска - это число двухсекундных приращений с полуночи, так что вы можете вычислить дату и время сборки в обратном направлении, как это:

new DateTime(2000, 1, 1).AddDays(assemblyName.Version.Build).AddSeconds(assemblyName.Version.Revision*2)
1 голос
/ 04 марта 2009

msbuildtasks не решили мою проблему. Как объяснено в описании, мне нужен специальный формат. Кроме того, документация для msbuildtasks хорошо ... иди найти ее.
Я изменил исходный код для AssemblyInfo Task , добавив новый тип приращения YearAndDay с моими потребностями:

case IncrementMethod.YearAndDay:
{
    DateTime dDate = DateTime.Now;
    long buildNumber = dDate.Year % 2000 * 1000;
    buildNumber += dDate.DayOfYear;
    string newVersionNumber = buildNumber.ToString();
    Log.LogMessage(MessageImportance.Low, logMessage, newVersionNumber);
    return newVersionNumber;
}

Казалось бы, самое простое решение.

...