[AssemblyVersion] является очень важным делом в .NET. Каждый тип в вашей программе отпечатан с версией ассемблера, он является частью идентификатора типа. Другими словами, когда изменяется версия вашего типа, вам также следует изменить версию сборки. Это вызывает перекомпиляцию всех других сборок, которые используют ваш тип.
Одна вещь, которую вы можете сделать, это позволить системе сборки автоматически увеличивать версию. Вы не можете назвать это «управлением версией», используя любое воображение. Потому что теперь просто перестройка вашей сборки, даже без внесения любых изменений в исходный код, сделает вашу сборку несовместимой с другим кодом, который использует типы в этой сборке.
Очевидно, что это может работать хорошо, только если вы перекомпилируете все код в вашем решении.
Ну, это не здорово, если вы не любите бой на мечах. Кроме того, иногда вы хотите сделать простое исправление ошибки в своем коде. В результате сборка все еще на 100% совместима с оригинальной версией. И вам не нужно и не хотите перекомпилировать все остальное, что его использует. Вы просто хотите отправить эту сборку вашему клиенту. Понятно, что это может работать хорошо только в том случае, если вы не позволите версии автоматически увеличиваться.
Так что вам действительно нужен какой-то инструмент, который может волшебным образом определить, что ваш исходный код, публично видимая часть, больше не совместим с предыдущей версией. Или изменения, внесенные в невидимую его часть, слишком сильно изменяют поведение кода, чтобы запретить другой код, использующий ваши типы, продолжать использовать его без каких-либо изменений в своем коде.
Есть только один инструмент, о котором я знаю, который может сделать это, тот, который у нас есть между нашими ушами.