如何使C#.NET CF程序的AssemblyInfo版本传播到Explorer Properties窗口?

看起来如果您编译Visual Studio解决方案并在AssemblyInfo.cs文件中有一个版本#,那应该传播到Windows资源管理器属性对话框。 这样,有人可以直接右键单击* .exe并单击“属性”以查看版本#。 Visual Studio中是否有特殊设置才能实现此目的?

示例图片http://content.screencast.com/users/Pincas/folders/Jing/media/40442efd-6d74-4d8a-8e77-c1e725e6c150/2008-09-24_0849.png

编辑:我应该提到,具体来说,这是.NET Compact Framework 2.0,它不支持AssemblyFileVersion。 所有希望都失去了吗?

请注意,在.NET Compact Framework下, AssemblyFileVersion属性不可用!

请参阅Daniel Mooth的这篇文章以获得解决方法。

AssemblyFileVersion属性是否有帮助?

您需要添加另一个属性:

[assembly: AssemblyFileVersion("1.0.114.0")] 

请注意,您仍需要AssemblyVerison,以正确识别.NET运行时的程序集。

版本号确实传播到属性对话框中的“版本”选项卡,但不会传播到摘要。 不幸的是,VS不会自动填充文件的摘要信息,因为信息是附加到文件本身的元数据。 但是,您可以使用Microsoft提供的免费DSO OleDocument Properties Reader自行访问和操作摘要信息。

您可以从以下网站获取该库: http : //www.microsoft.com/downloads/details.aspx? FamilyId = 9BA6FAC6-520B-4A0A-878A-53EC8300C4C2&displaylang = en

有关其使用的更多信息,请访问: http : //www.developerfusion.co.uk/show/5093/

编辑 :如上所述,pb和Nigel Hawkins 可以通过使用AssemblyFileVersion属性获取属性,如:

 [assembly: AssemblyFileVersion("1.0.114.0")] 

我不确定RevisionNumber是否是正确的字段。

尝试使用资源管理器,右键单击 – >版本选项卡,然后查看那里的AssemblyVersion字段。

在我的项目中,我们使用FileVersion = YYYY.MM.DD.BUILD(例如,2008.9.24.1),但ProductVersion应该是major.minor.revision.BUILD。 我们使用AssemblyInformationalVersion解决这个问题。

AssemblyVersion =“MAJ.MIN.REV.1” – >由.NET使用

AssemblyInformationalVersion =“MAJ.MIN.REV.XXX” – >在资源管理器的ProductVersion中使用

AssemblyFileVersion =“YYYY.MM.DD.XXX” – >在资源管理器的FileVersion中使用

注意:此答案用于访问.NET CF 3.5应用程序中的AssemblyInfo属性。 它不会传播到Windows资源管理器内的可执行文件“属性”(但可用于写入文件,控制台或显示在应用程序中)

我知道这是一个非常古老的问题,但这里有一个解决方案,我发现使用Reflection和Linq来获取“AssemblyInformationalVersion”(在较新的Visual Studio项目中的产品版本)。

首先,我将它添加到AssemblyInfo.cs(用你想要使用的任何东西替换字符串):

 [assembly: AssemblyInformationalVersion("1.0.0.0 Alpha")] 

然后,您可以使用此方法提取属性(我将其放在AssemblyInfo.cs文件中的静态类中)。 方法获取所有Assembly属性的数组,然后选择与属性名称匹配的第一个结果(并将其强制转换为正确的类型)。 然后可以访问InformationalVersion字符串。

 //using System.Reflection; //using System.Linq; public static string AssemblyInformationalVersion { get { AssemblyInformationalVersionAttribute informationalVersion = (AssemblyInformationalVersionAttribute) (AssemblyInformationalVersionAttribute.GetCustomAttributes(Assembly.GetExecutingAssembly())).Where( at => at.GetType().Name == "AssemblyInformationalVersionAttribute").First(); return informationalVersion.InformationalVersion; } } 

为了获得我使用的正常“AssemblyVersion”属性:

 //using System.Reflection; public static string AssemblyVersion { get { return Assembly.GetExecutingAssembly().GetName().Version.ToString(); } }