版本信息在Visual Studio 2008中无法使用 - Compact framework / Win Mobile 6

时间:2011-10-25 16:06:13

标签: visual-studio-2008 compact-framework windows-mobile-6

我很难在程序集/ exe中获取版本信息。关于这一点似乎有很多问题,但没有一个能帮助我解决这个问题。

在我的exe中包含版本信息似乎是基本和简单的,但是当我从资源管理器中查看上下文菜单(右键单击> properties->详细信息)时它不会显示

如何在C#compact framework / WinMobile 6.0项目中添加版本信息(不使用插件)?

这是默认的assemblyinfo.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 个答案:

答案 0 :(得分:6)

也许我不理解这个问题,但包含版本信息就像设置assembly: [AssemblyVersion][1]属性一样简单。您可以使用以下内容进行查询:

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

<强>更新

这是一个非常奇怪的行为。我知道我的应用程序和程序集中有版本信息,因此我打开了Studio并创建了一个新的智能设备项目并保留了所有默认值。果然,我得到了你看到的行为 - 也就是说没有版本信息。 WTF?我回去打开了一个存根项目,它在二进制文件中有版本信息,AssemblyInfo.cs文件确实没有什么不同。

我玩了一下,事实证明,如果你将项目的目标平台从“Windows Mobile Xxxx”更改为“Windows CE”(如果你仍然可以部署到WinMo目标)你这样做)然后版本信息 最终在二进制文件中。不知道为什么会出现这种情况 - WinMo配置的编译器命令行必须与CE配置不同。

答案 1 :(得分:1)

为Windows Mobile生成的应用程序不是使用标准Windows操作系统可执行格式创建的。这意味着您运行的Windows操作系统不知道如何从文件中提取信息以填充详细信息选项卡。

话虽如此,版本信息仍然嵌入在应用程序中,并且可在移动设备上使用。如果您需要在应用程序中向用户显示此信息(例如,关于框),可以使用包括GetFileVersionInfo和VerQueryValue在内的coredll方法检索此数据。

我们检索这些数据的类大约有350行,所以我觉得在这里发帖并不合适,我无法快速找到我们从中得到原始想法的来源。如果需要,我可以对此进行额外的研究。