Атрибут AssemblyFileVersion игнорируется - PullRequest
2 голосов
/ 25 октября 2011

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

Итак, я попытался создать пустой (кроме Class1.cs) классбиблиотека, чтобы увидеть, если это где-то параметр, но я получаю то же поведение.

Кажется, атрибут AssemblyVersion просто игнорируется.

Вот соответствующий бит из моего файла AssemblyInfo.cs...

[assembly: AssemblyVersion("0.1")]
[assembly: AssemblyFileVersion("1.1.0.9")]

и вот как все выглядит в проводнике Windows ...

Windows Explorer Screen Grab

Есть ли где-нибудь настройка, управляющая этим?

РЕДАКТИРОВАТЬ: Я нашел один файл, где есть разница, так что это не Windows Explorer, показывающий одинаковое значение для двух разных полей, это как-то связано с тем, как DLL генерируется изкомпилятор / компоновщик ...

enter image description here

Ответы [ 3 ]

5 голосов
/ 25 октября 2011

Ключевая проблема здесь в том, что Windows ничего не знает об атрибутах в управляемой программе.Он читает неуправляемый ресурс версии файла.Тот, который встроен в сборку C # с параметром компиляции / win32res.Компилятор автоматически создает его по умолчанию, если вы не используете эту опцию, используя значения атрибута сборки, указанные вами в AssemblyInfo.cs для создания ресурса.

Но ресурс версии неуправляемого файла не имеетстандартное поле для указания чего-либо вроде [AssemblyVersion].Только [AssemblyFileVersion].Компилятор на самом деле его испускает, ресурс версии расширяемый.Но Windows XP была последней версией, которая все еще отображает эти настраиваемые поля.Вы можете увидеть этот неуправляемый ресурс, открыв сборку в Visual Studio с помощью команды «Файл + Открыть + Файл».

Да, хромает и раздражает.Группа Windows в MS не любит обслуживать управляемый код.

4 голосов
/ 25 октября 2011

Правильно, нашел ответ: -)

Вам нужно отредактировать AssemblyInfo.cs и добавить следующее внизу

[assembly: AssemblyInformationalVersion("4.4.4.4")]

Это значение отображается в «версии продукта» в проводнике. AssemblyInformationalVersion является необязательной. Если не указано, используется AssemblyVersion.

Более подробная информация по этой теме здесь

1 голос
/ 25 октября 2011

Проверка на моем ПК, на самом деле все работает нормально.

Explorer:

enter image description here

Свойства:

enter image description here

Другие отличия: enter image description here

Моя версия windows explorer.exe 6.1.7601.17567, если это поможет.Windows 7 SP1

Самостоятельное тестирование в Visual Studio с помощью

[assembly: AssemblyVersion("2.2.2.2")]
[assembly: AssemblyFileVersion("3.3.3.3")]

Получил результат: enter image description here Похоже, Visual Studio что-то здесь не так делает.

...