Как лучше всего реализовать управление версиями двоичного файла?

Я думаю о следующем дизайне:

static class AppVersion
{
     public static string BuildDate 
     {
       get; set;
     }
     public static string Version 
     {
       get; set;
     }
     public static string GetVersion 
     {
       get; set;
     }
}

Несколько вопросов по этому поводу:

  1. Как я могу узнать дату сборки?
  2. Как мне распечатать дату в удобном формате?
  3. Как я могу получить и распечатать версию Visual Studio в удобном формате?
  4. Вероятно, это плохая идея - жестко закодировать версию в двоичный файл, поэтому я помещаю версию в информацию о сборке. Как можно программно получить?

person Community    schedule 11.06.2009    source источник
comment
Рич, сделай мне одолжение и оставь мои сообщения в покое?   -  person    schedule 11.06.2009
comment
См.: stackoverflow.com/questions/175256/ ... и ... stackoverflow.com/questions/199823/   -  person Shog9    schedule 11.06.2009


Ответы (4)


Думаю, ваши первые вопросы - дело вкуса. Вы можете использовать String.Format, чтобы получить любой стиль, какой захотите. Относительно вашего последнего вопроса:

System.Reflection.Assembly.GetExecutingAssembly().Version

возвращает номер версии текущей сборки и:

typeof(SomeTypeInSomeAssembly).Assembly.Version

вернет номер версии сборки, содержащей конкретный тип.

person mmx    schedule 11.06.2009

Мы запускаем все наши производственные сборки через CruiseControl.NET, который (помимо прочего) имеет возможность создавать версии.

Затем у нас есть фрагмент кода, который применяет сгенерированный CC.NET номер сборки (и другие вещи) к AssemblyInfo.cs непосредственно перед тем, как он будет передан компилятору для сборки.

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

person tomfanning    schedule 11.06.2009

Дата сборки см. На http://dotnetfreak.co.uk/blog/archive/2004/07/08/determining-the-build-date-of-an-assembly.aspx

Чтобы узнать версию / получить версию, посмотрите пространство имен System.Reflection.Assembly.

Что касается печати даты в удобном формате, вы захотите использовать методы расширения, созданные на основе класса DateTime, такие как .ToShortDateString () или CultureInfo.

person David Yancey    schedule 11.06.2009

Для даты сборки или метки времени вы можете встроить ее в сборку при сборке.
Чтобы узнать, как это сделать, см. здесь.

person Cheeso    schedule 11.06.2009