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