似乎编译Visual Studio解决方案并在AssemblyInfo.cs文件中有一个版本#,它应该传播到Windows资源管理器属性对话框。这样,有人可以直接右键单击* .exe并单击“属性”以查看版本#。 Visual Studio中是否有特殊设置才能实现此目的?
编辑:我应该提到,具体来说,这是针对.NET Compact Framework 2.0的,它不支持AssemblyFileVersion。所有希望都失去了吗?
答案 0 :(得分:6)
请注意, AssemblyFileVersion 属性在.NET Compact Framework 下不可用!
请参阅Daniel Mooth的this文章,了解解决方法。
答案 1 :(得分:1)
答案 2 :(得分:1)
您需要添加其他属性:
[assembly: AssemblyFileVersion("1.0.114.0")]
请注意,您仍然需要AssemblyVerison才能正确识别.NET运行时的程序集。
答案 3 :(得分:1)
版本号确实传播到属性对话框中的“版本”选项卡,但不会传播到摘要。不幸的是,VS不会自动填充文件的摘要信息,因为信息是附加到文件本身的元数据。但是,您可以使用Microsoft提供的免费DSO OleDocument Properties Reader自行访问和操作摘要信息。
获取图书馆有关其使用的更多信息,请访问:http://www.developerfusion.co.uk/show/5093/
编辑:如上所述,pb和Nigel Hawkins你可以通过使用AssemblyFileVersion属性 来获取属性以进行传播:
[assembly: AssemblyFileVersion("1.0.114.0")]
答案 4 :(得分:0)
我不确定RevisionNumber是否是正确的字段。
尝试使用资源管理器,右键单击 - >版本选项卡,并查看那里的AssemblyVersion字段。
答案 5 :(得分:0)
在我的项目中,我们使用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
答案 6 :(得分:0)
注意:此答案用于访问.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();
}
}