visual-studio-2008 versioninfo для всех файлов, обновляемых из одного места - PullRequest
1 голос
/ 29 апреля 2010

Информация о версии, отображаемая при наведении курсора мыши на файл в проводнике Windows, устанавливается для файла, созданного Visual Studio в ресурсе VERSION. Я хотел бы установить версию в одном месте для всех файлов, созданных решением, предпочтительно, когда я изменяю версию в свойствах установки. Есть ли способ сделать это?

Мотивация для этого заключается в том, что если версия не обновляется для файла, то установщик оставит предыдущие версии файлов вместо того, чтобы заменить их новыми файлами. Это происходит, даже если установлено свойство RemovePreviousVersions. Чтобы сохранить утомительную и подверженную ошибкам задачу обновления версии в каждом созданном и установленном файле, я удаляю ресурс версии из всех файлов, что не элегантно.

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Второй ответ в теме Stack Overflow Как программно изменить версию продукта проекта? предлагает решение для установки номера версии из общего заголовочного файла в C ++. Просто поместите заголовочный файл, содержащий жестко запрограммированные номера версий, в папку, где его может найти каждый проект.

Приведенный выше ответ также описывает способ увеличения номера версии. Альтернативный подход к увеличению версии C ++ доступен из статьи Microsoft Как увеличить информацию о версии после каждой сборки в Visual C ++ .

В качестве альтернативы, вы можете использовать номер ревизии вашего хранилища контроля версий как часть номера версии. Статья переполнения стека Создание файла с номером сборки и именем ветви в SVN дает некоторое представление об этом для пользователей TortoiseSVN. Следующие две статьи исследуют это более подробно:

Автоматическая интеграция версии Subversion в версию с .NET (C # или VB)

Автоматическая интеграция версии Subversion в версию с родным C / C ++

(вышеупомянутые две веб-страницы содержат ссылки на аналогичные процедуры для Пользователи TortoiseHg)

Теоретически, вы можете иметь один текстовый файл с новым номером версии, а затем запустить сценарий предварительной сборки, который будет:

  1. Увеличение номера версии в текстовом файле (опционально включая номер ревизии репозитория)
  2. Запишите или измените файлы общей версии для:
    • C ++ (version.h)
    • C # (GlobalAssemblyInfo.cs)
    • Java (в виде файла свойств Ant, например version.properties)
    • и т.д.
0 голосов
/ 29 апреля 2010

Чтобы централизовать управление версиями для решения:

  1. Извлеките информацию о версии из AssemblyInfo.cs;
  2. Создайте новый файл (GlobalAssemblyInfo.cs) и поместите информацию о своей версии вэто (использование * для получения VS для создания нового номера версии для каждой сборки);
  3. Ссылка на GlobalAssemblyInfo.cs в качестве ссылки: Добавить |Затем выберите существующий элемент в раскрывающемся списке «Добавить как ссылку» и нажмите «Добавить как ссылку»;
  4. Повторите для каждого проекта в решении;

Я использую такой блок для версии:

# if DEBUG

[Assembly: AssemblyVersion ("1.8.0.0")]

# else

[Assembly: AssemblyVersion ("1.8.* ")]

# endif

Это не дает VS пересобрать каждую сборку во время разработки, но дает каждой сборке новый номер версии при сборке выпуска.

...