Просмотр текущего номера версии сборки в VS2008 - PullRequest
2 голосов
/ 11 марта 2009

Хотелось бы узнать, есть ли способ увидеть номер версии сборки последней завершенной сборки в Visual Studio 2008 IDE. Я не хочу видеть 1.0. *, Который находится в диалоговом окне Информация о сборке или файл AssemblyInfo, а скорее полную версию (с заменой * действительными числами). Я также не хочу вызывать Свойства исполняемого файла или сборки проекта.

Ответы [ 5 ]

2 голосов
/ 11 марта 2009

Хорошо, я думаю, что теперь ваш вопрос лучше, вы хотите увидеть, что такое номер сборки, без фактической сборки ... как, например, как Visual Studio узнает, каким будет следующий номер, когда его значение установлено на *

Если вы используете автоматические номера сборки, допустим, что у вас 1.0. *, А VS создает значение, например 1.0.3245.1234

3245 - дни с 1 января 2000 года

1234 - секунды с полуночи, разделенные на два.

ОТВЕТЬТЕ НА СВОЮ РЕДАКТИРОВАТЬ:

Единственное, что я могу придумать, чтобы получить номер сборки без выполнения некоторого кода в сборке или проверки свойств файла, - это создать какое-то событие после сборки, которое проверяет свойства сборки и выдает в окне сообщения, отображающем его, или, что еще лучше, напишите комментарий в начало файла AssemblyInfo.cs с номером сборки

1 голос
/ 11 марта 2009
Assembly.GetExecutingAssembly().FullName.

С MSDN :

using System;
using System.Reflection;

class Example
{
    static void Main()
    {
        Console.WriteLine("The FullName property (also called the display name) of...");
        Console.WriteLine("...the currently executing assembly:");
        Console.WriteLine(Assembly.GetExecutingAssembly().FullName);

        Console.WriteLine("...the assembly that contains the Int32 type:");
        Console.WriteLine(typeof(int).Assembly.FullName);
    }
}

/* This example produces output similar to the following:

The FullName property (also called the display name) of...
...the currently executing assembly:
SilverlightApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
...the assembly that contains the Int32 type:
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
 */
0 голосов
/ 19 августа 2009

Я бы посоветовал внести небольшое изменение в процесс сборки, чтобы номер версии отображался в области «Вывод» каждый раз, когда вы компилируете. Это на самом деле очень просто:

Щелкните правой кнопкой мыши свой проект и выберите «Выгрузить проект». Весь ваш код «исчезает», но нет нужды паниковать.

Щелкните правой кнопкой мыши еще раз и выберите «Изменить ...». Откроется proj-файл в формате xml, и теперь вы добавите этот фрагмент кода внутри тега <ProjectExtensions>.

<Target Name="AfterBuild">
  <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
    <Output TaskParameter="Assemblies" ItemName="MyAssemblyIdentities"/>
  </GetAssemblyIdentity>
  <Message Text="AssemblyVersion: %(MyAssemblyIdentities.Version)" 
    Importance="high" />
</Target>

Сохраните и закройте файл. Щелкните правой кнопкой мыши и выберите «Обновить проект». Это вернет проект, как и раньше.

Скомпилируйте, и вы увидите новую строку текста в окне вывода:

AssemblyVersion = 1.0.3518.36887

Вот и все.

Именно этот эпизод DnrTV сказал Хашими на MS Build , который открыл мне глаза на MSBuild и все классные вещи, которые вы можете сделать. Настоятельно рекомендуется. :)

0 голосов
/ 11 марта 2009

Это поле Информация о сборке в свойствах указывает на файл в вашем проекте, обычно называемый AssemblyInfo.cs (в папке «Свойства»). Вот где живет реальный код для установки версии, и, вероятно, проще взглянуть на этот файл, чем просматривать настройки.

EDIT
Теперь я понимаю проблему. Это сгенерированное число, и я не знаю о нем через Visual Studio.

РЕДАКТИРОВАТЬ 2 :
Если вы хотите получить зависимость от PowerShell , вы можете создать событие после сборки или пункт меню Внешние инструменты , чтобы вызвать методы .NET в этой сборке, чтобы получить ее версию ...

0 голосов
/ 11 марта 2009

упрощенный подход,

Application.ProductName;
Application.ProductVersion;
...