Для чего используется AssemblyFileVersion в C #? - PullRequest
11 голосов
/ 20 августа 2009

В сборке Info.cs у меня есть AssemblyVersion и AssemblyFileVersion.

Обычно я просто увеличиваю AssemblyVersion следующим образом. 1-я цифра: значительное изменение 2-я цифра: незначительное изменение 3-я цифра: исправление ошибок 4-я цифра: номер версии Subversion

Однако мне интересно, для чего предназначен AssemblyFileVersion и когда мне нужно увеличивать его. Должно ли оно быть таким же, как сборка версии?

Должен ли я просто закомментировать это, если я не использую это?

Большое спасибо за любой совет,

Ответы [ 5 ]

15 голосов
/ 20 августа 2009

AssemblyVersion используется загрузчиком классов .NET и определяет версию сборки .NET. AssemblyFileVersion представляет версию файла, содержащуюся в стандартном блоке VERSION_INFO файла Windows PE ... другими словами, она представляет версию файла, как показано в диалоговом окне свойств файла.

Если вы не укажете AssemblyFileVersion, компилятор по умолчанию будет таким же, как AssemblyVersion.

5 голосов
/ 20 августа 2009

Как правило, версия файла является более точной, чем версия сборки. Например: System.Windows.Form.dll - версия сборки: 2.0.0.0, версия файла: 2.0.50727.3053.

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

Итак, если вы обнаружите небольшую ошибку в одной из упомянутых сборок. Вы исправляете ошибку, обновляете версию файла, но сохраняете ту же версию сборки. Преимущество: вам не нужно связывать ссылки на эту сборку с новой версией, а с версией файла вы можете узнать текущую версию вашего файла.

3 голосов
/ 28 сентября 2009

Я не эксперт, и, возможно, я не ссылаюсь на эксперта, но из того, что я понял, в общих чертах, AssemblyVersion - это «интерфейс» -> что делает сборка, обратная совместимость и т. Д. больше связано с реализацией, сборкой и т. д.

Используйте атрибут AssemblyVersion для указания версии «Last Compatible-To» и атрибут AssemblyFileVersion для указания версии сборки. »

-> http://www.shitalshah.com/blog/IsJeffRichterScrewingUpTheNetVersioning.aspx

// О, и еще кое-что.

Существуют определенные обстоятельства (о которых мне не слишком ясно, поскольку я только слышал о них, но фактически не испытывал их), когда, если вы попытаетесь обновить приложение с помощью DLL в GAC, старые версии DLL победят не будут перезаписаны новыми версиями с тем же номером версии сборки, если только версия файла не была изменена. (Это предложение достаточно сложно? Здесь уже поздно ...)

3 голосов
/ 20 августа 2009

Установщики будут использовать AssemblyFileVersion, чтобы определить, следует ли перезаписать файл в зависимости от версии.

Важно отметить, что изменение AssemblyVersion для сборки, которая реализует сериализацию, имеет некоторые серьезные последствия при попытке десериализации из предыдущей версии.

2 голосов
/ 20 августа 2009

AssemblyFileVersion используется для установки информации о версии в ресурсе Win32 в вашем двоичный, тот, который вы увидите, если откроете окно свойств файла в проводнике.

...