Ответ 1
Я думаю, что разные версии предназначены для разных целей.
1) AssemblyVersion для CLR для загрузки и привязки сборок. Это полезно для разработчиков, но не для конечных пользователей.
2) FileVersion или AssemblyFileVersion - это то, что Windows отображается как версия исполняемого файла. Это одна и та же версия приложения Win32. И эта версия используется системой и установщиками для определения, какая версия является более новой.
3) PublishVersion используется для версии пакета развертывания. Вполне возможно, что те же двоичные файлы, опубликованные дважды, с различными версиями публикации.
4) Версия, которую вы показываете конечным пользователям, - это еще одна версия. Назовите эту версию продукта или что-то еще. Он может отличаться от любого из вышеприведенного, например, бизнес Цель. См. AssemblyInformationalVersionAttribute, если вы хотите использовать встроенную поддержку .NET.
В простых случаях вы можете использовать FileVersion в качестве версии продукта. Но опубликовать версию для меня не очень хорошо.