В чем разница между FileVersion и ProductVersion для DLL? - PullRequest
37 голосов
/ 15 апреля 2009

В чем разница между FileVersion и ProductVersion для DLL?

В частности, во время выполнения один используется для сильной привязки, а другой - для информации?

Мне бы хотелось, чтобы один из них был установлен вручную, а другой - автоматически (через наш процесс сборки CI)

Редактировать: Ричард ответил на ту часть, которую я пропустил в исходном вопросе. Это версия сборки, которой я хочу управлять вручную (увеличивая с изменением интерфейса), в то время как это версия файла, которую я хочу, чтобы моя система CI автоматически увеличивалась с каждой сборкой. Спасибо.

Ответы [ 3 ]

25 голосов
/ 15 апреля 2009

Файлы распространяются как часть более крупного проекта. Файл с индивидуальной версией сборки x может распространяться как часть версии проекта y.

Для уточнения: A.exe с версией продукта 1.1 поставляется с файлами B.dll и C.dll. Все начинаются с соответствующих версий продукта и файла. Тогда кто-то находит серьезную ошибку в продукте. Разработчик смотрит на это и выпускает исправление, которое только обновляет B.dll. Теперь версия продукта, вероятно, также обновляется до 1.1.1, чтобы учесть незначительное исправление. И версия файла B.dll также будет 1.1.1. Но A.exe и C.dll не изменились, поэтому их версия файла может быть 1.1.

19 голосов
/ 15 апреля 2009

Ни один из них не используется для строгой привязки (аспект версии полного / строгого имени происходит из атрибута AssemblyVersion).

И версия файла (из атрибута AssemblyFileVersion), и версия продукта (из атрибута AssemblyInformationalVersion) вносят свой вклад в ресурс версии (как видно из свойств файла проводника).

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

Приложение: почему они могут отличаться? Ответ: Из-за требований к версиям. Сохранение версии сборки одинаковым означает, что обновленная версия (с более высокой версией файла) будет привязана без изменений. Это оказывает большое влияние на сериализацию (например, постоянные рабочие процессы).

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

2 голосов
/ 25 февраля 2016

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

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

Теперь, почему вы используете не только цифры в версии?
Ну, согласно семантическому версионированию (semver.org) версия выглядит так: [Major]. [Minor]. [Patch] и в патче вы можете использовать:

  • метаданные перед выпуском после тире, например 1.2.1-бета
  • метаданные сборки, после плюса, например короткий хеш из git 1.2.1 + f0f0f0f
...