Как ввести / обновить версию и другие данные в двоичном (.net или неуправляемом) формате?

Я пытаюсь разработать фрагмент кода (C ++ или C #), с помощью которого я смогу вставить информацию о версии файла / продукта, компании и авторских правах в наши двоичные файлы (на основе .net и C ++), прежде чем упаковывать их в установщик.

Любая помощь могла бы быть полезна?

Спасибо


person Farrukh Waheed    schedule 29.08.2013    source источник
comment
Пусть ваши специалисты по управлению конфигурацией обновят сценарий VERSIONINFO, который является #included в сценарии ресурсов продукта во время фактической сборки. Я настоятельно не рекомендую против использовать пост-сборку двоичного кода .NET, так как вы клевете на то, чтобы опустить подпись файла и сделать компонент недействительным.   -  person WhozCraig    schedule 29.08.2013
comment
Да, есть процедура Pre-Build, которая выполняется через PreBuildEvent и делает то же самое. Он либо создает файл .rc, либо AssemblyInfo.cs, либо AssemblyInfo.cpp (в случае Managed C ++). Но мы хотим отделить процедуру управления версиями от этапа компиляции. Причина - это какое-то требование, чтобы те же встроенные двоичные файлы могли быть обновлены без компиляции кода (для чего мы должны выполнить полную процедуру компиляции, которая может занять 3-4 часа).   -  person Farrukh Waheed    schedule 30.08.2013
comment
Фактически, я видел использование утилиты, вставляющей ресурсы версии в двоичные файлы непосредственно в другой организации. К сожалению, я не могу попросить у них исходный код их внутренней утилиты, поэтому я пытаюсь создать свою собственную, делая то же самое.   -  person Farrukh Waheed    schedule 30.08.2013
comment
Думаю, я не сказал этого достаточно ясно, хотя я знаю, что это не то, что вы хотите (поэтому это здесь, а не ответ). Там, где я работаю, группа, занимающаяся только производством сборок, отвечает за тегирование системы управления версиями, извлечение исходного кода, создание скрипта информации о версии (на самом деле это замена) и запуск собственно сборки. То, что выходит на другом конце, - это правильно проштампованная сборка. Мы не используем и никогда не будем использовать msbuild или настройки проекта для управления версиями сборки. Это контролируется CM (также известным как сборщики). Просто чтобы вы знали, что я описывал.   -  person WhozCraig    schedule 30.08.2013


Ответы (1)


Для управляемого кода вы можете использовать атрибуты сборки. Их значения будут показаны в деталях файла, если вы откроете его в проводнике, и к ним также можно будет получить доступ из кода.

[assembly: AssemblyVersion("2.7.35.0")]
[assembly: AssemblyConfiguration("QA")]
[assembly: AssemblyDescription("It's my app")]

Visual studio создает файл AssemblyInfo.cs с этими атрибутами для каждого проекта, поэтому вы можете просто обновить его.

person alex    schedule 29.08.2013
comment
Алекс, это то, что мы уже делаем. Пожалуйста, прочтите мой ответ на ответ @WhozCraig, потому что мы хотим вводить / обновлять информацию о версии непосредственно в двоичные файлы. - person Farrukh Waheed; 30.08.2013