Добавить пользовательскую информацию о версии в приложение C # - PullRequest
0 голосов
/ 29 ноября 2010

Приложение является службой WCF для C # .Net 3.5.

Я бы хотел во время процесса сборки динамически добавлять некоторую информацию о сборке в конечный двоичный файл и сборки, которые затем могут быть прочитаны программно и отправлены обратно вКлиент WCF, когда он отправляет запрос GetVersionInfo в веб-службу.

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

Я думаю, что я бы сделал это, добавив событие после сборки, чтобы вызвать скрипт для обновления.файл app.config с данными, которые я хочу.Звучит ли это правильно, или я должен рассмотреть какой-то другой подход?

Обновление

Мне бы хотелось, чтобы эта строка появлялась в «Особом описании сборки»Свойство конечного exe.Т.е. я бы хотел щелкнуть правой кнопкой мыши по файлу и увидеть эту информацию на вкладке версии файла.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 29 ноября 2010

Я подозреваю, что событие перед сборкой может быть более подходящим, чем после сборки ... Вы рассматривали возможность добавления файла buildinfo.xml (или аналогичного), который будет встроен в сборку как встроенный ресурс?Затем вы можете загрузить его с Assembly.GetManifestResourceStream.Таким образом, вам не нужно беспокоиться о том, чтобы вписаться в существующие файлы или что-то в этом роде - просто перезапишите buildinfo.xml новым файлом на этапе предварительной сборки.

1 голос
/ 29 ноября 2010

Вы должны решить, насколько важно, чтобы информация, которую вы хотите обменять, была привязана к самому исполняемому файлу.

Обновление файла конфигурации во время сборки является работоспособной моделью,но она помещает информацию в место, где ее может изменить любой, у кого есть доступ и текстовый редактор.

Обновление информации после сборки в скомпилированной сборке, безусловно, возможно, но она хрупкая и ломается, если вырешите подписать собрания.Это также большая работа, поскольку нет встроенной поддержки перезаписи файлов сборки таким способом.

Альтернативой, которую вы должны рассмотреть, является создание собственных пользовательских атрибутов метаданных уровня сборки и назначение их во времяПроцесс сборки.Вы даже можете поместить их в отдельный файл кода (или добавить их в AssemblyInfo.cs) как часть вашей сборки.

Вы также можете рассмотреть возможность создания встроенного ресурса (например, файла XML) и извлеченияэто из манифеста сборки во время выполнения.

Любой из приведенных выше подходов потребует от вас использовать пользовательский шаг перед сборкой, а не шаг после сборки.

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

...