Информация о версии не работает в Visual Studio 2008 - Компактный каркас / Win Mobile 6 - PullRequest
9 голосов
/ 25 октября 2011

Мне трудно получить информацию о версии в моей сборке / exe. Кажется, есть много вопросов по этому поводу, но ни один из них не помогает мне решить проблему.

Базовым и простым представляется включение информации о версии в мой exe-файл, но она не отображается, когда я просматриваю контекстное меню из проводника (щелчок правой кнопкой мыши -> свойства -> подробности)

Как мне добавить информацию о версии (без использования плагинов) в мой C # compact framework / WinMobile 6.0 проект?

Вот сборка по умолчанию .info.cs

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TestingVerInfo")]
[assembly: AssemblyDescription("hello")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("world")]
[assembly: AssemblyProduct("TestingVerInfo")]
[assembly: AssemblyCopyright("Copyright ©  2011")]
[assembly: AssemblyTrademark("gggg")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("5e5fffea-0c9d-4394-9a0f-d24b7e7db9ed")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
[assembly: AssemblyVersion("1.0.0.0")]

А вот менее впечатляющие детали файла:

enter image description here

Ответы [ 2 ]

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

Возможно, я не понимаю вопроса, но включить информацию о версии так же просто, как установить атрибут assembly: [AssemblyVersion][1].Вы можете запросить его обратно, используя что-то вроде этого:

 var version = Assembly.GetExecutingAssembly().GetName().Version;

ОБНОВЛЕНИЕ

Ну вот действительно странное поведение.Я знал, что у меня есть информация о версии в моих приложениях и сборках, поэтому я открыл Studio и создал новый проект Smart Device и оставил все значения по умолчанию.Конечно же, у меня есть поведение, которое вы видите, то есть нет информации о версии.WTF?Я вернулся и открыл проект-заглушку, в котором действительно была информация о версии в двоичном файле, и файл AssemblyInfo.cs действительно не отличался.

Я немного поиграл, и оказалось, что если вы измените целевая платформа вашего проекта. От «Windows Mobile Xxxx» до «Windows CE» (если вы все же можете выполнить развертывание на целевом объекте WinMo), тогда информация о версии действительно попадает в двоичный файл,Не знаю, почему это так - командная строка компилятора для конфигурации WinMo должна отличаться от конфигурации CE.

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

Приложения, созданные для Windows Mobile, не создаются с использованием стандартного исполняемого формата операционной системы Windows. Это означает, что используемая операционная система Windows не знает, как извлечь информацию из файла, чтобы заполнить вкладку сведений.

Сказав это, информация о версии все еще встроена в приложение и доступна на мобильном устройстве. Если вам необходимо представить эту информацию своим пользователям в приложении (например, поле about), есть способы получить эти данные с помощью методов coredll, включая GetFileVersionInfo и VerQueryValue.

Наш класс для извлечения этих данных имеет длину около 350 строк, поэтому я не считаю целесообразным размещать здесь сообщения и не смог быстро найти источник, откуда мы получили исходную идею. При необходимости я могу провести дополнительное исследование.

...