2011-10-25 2 views
1

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

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

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

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

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

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

Windows Explorer Screen Grab

Есть ли настройки где-то это контролирует?

EDIT: Я нашел один файл, где есть разница, так что это не Windows Explorer, показывая то же значение для двух различных областей, это что-то делать с тем, как DLL генерируется из компилятора/компоновщик ...

enter image description here

+0

версия продукта! = Версия Ассамблеи. Кажется, что он работает правильно для меня ... –

+0

@Marc, так что же атрибут AssemblyVersion отображается в Windows Explorer? –

+0

довольно уверен, что он * используется * для отображения, но на самом деле я не могу его отобразить в win-7. Вполне возможно, что ответ просто: он вообще не влияет на проводник *, но по-прежнему является важной частью определения сборки. –

ответ

5

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

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

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

1

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

Проводник:

enter image description here

Свойства:

enter image description here

Другие, которые отличаются являются: enter image description here

Мои окна 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 делает что-то здесь не так.

3

Да, нашел ответ :-)

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

[assembly: AssemblyInformationalVersion("4.4.4.4")] 

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

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

+0

Да, я нашел этот атрибут, но не пробовал, так как я просто пытался проверить, что такое AssemblyVersion. Благодарю. –

+0

У меня просто были разные записи 'AssemblyVersion' и' AssemblyFileVersion', а ** AssemblyFileVersion' ** использовался для версии продукта и файла в Explorer. (Возможно, «исправить» версию продукта «AssemblyInformationalVersion», но это немного противоречит тому, что у вас есть. Я думаю, что если «AssemblyInformationalVersion» и «AssemblyFileVersion», ** тогда ** 'AssemblyVersion' не используется .) – ruffin

Смежные вопросы