Подтвердить что ты не робот

Какая разница между dll FileVersion и ProductVersion?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

Файлы распространяются как часть более крупного проекта. Файл с отдельной версией сборки 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.

Ответ 3

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

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

Теперь почему вы используете не только номера в версии?
Ну, по версии семантической версии (semver.org) версия выглядит так: [Основной]. [Малый]. [Патч] и в патче вы можете использовать:

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