Атрибут AssemblyFileVersion игнорируется
У меня проблема с получением отличия AssemblyVersion от атрибутов AssemblyFileVersion в библиотеке классов, над которой я работаю.
Итак, я попытался создать пустую (кроме Class1.cs) библиотеку классов, чтобы увидеть, является ли это где-то параметром, но я получаю то же самое поведение.
Кажется, атрибут AssemblyVersion просто игнорируется.
Вот соответствующий бит из моего файла AssemblyInfo.cs...
[assembly: AssemblyVersion("0.1")]
[assembly: AssemblyFileVersion("1.1.0.9")]
и вот как все выглядит в Windows Explorer ...
Есть ли где-то настройка, которая контролирует это?
РЕДАКТИРОВАТЬ: я нашел один файл, где есть разница, так что это не Windows Explorer, показывающий одно и то же значение для двух разных полей, это связано с тем, как DLL генерируется из компилятора / компоновщика...
3 ответа
Ключевая проблема здесь в том, что Windows ничего не знает об атрибутах в управляемой программе. Он читает ресурс неуправляемой версии файла. Тот, который встроен в сборку C# с параметром компиляции /win32res. Компилятор автоматически генерирует его по умолчанию, если вы не используете эту опцию, используя значения атрибута сборки, указанные вами в AssemblyInfo.cs, для создания ресурса.
Но ресурс неуправляемой версии файла не имеет стандартного поля для указания чего-либо вроде [AssemblyVersion]. Только [AssemblyFileVersion]. Компилятор на самом деле его испускает, ресурс версии расширяемый. Но Windows XP была последней версией, которая все еще отображает эти настраиваемые поля. Вы можете увидеть этот неуправляемый ресурс, открыв сборку в Visual Studio с помощью File + Open + File.
Да, хромает и раздражает. Группа Windows в MS не любит обслуживать управляемый код.
Правильно, нашел ответ:-)
Вам нужно отредактировать AssemblyInfo.cs и добавить следующее внизу
[assembly: AssemblyInformationalVersion("4.4.4.4")]
Это значение отображается в "версии продукта" в проводнике. AssemblyInformationalVersion является необязательной. Если не указано, используется AssemblyVersion.
Больше информации по этой теме здесь
Проверка на моем компьютере, на самом деле все работает нормально.
Проводник:
Свойства:
Другие, которые отличаются:
Моя версия windows explorer.exe 6.1.7601.17567, если это помогает. Windows 7 SP1
Тестирую это сам на Visual Studio с
[assembly: AssemblyVersion("2.2.2.2")]
[assembly: AssemblyFileVersion("3.3.3.3")]
Дал результат:Похоже, Visual Studio делает что-то не так здесь.