到目前为止,我完全忽略了版本号。我需要向程序集中添加任何内容吗?如何以编程方式检索它?
不幸的是,这不适用于Compact Framework。Compact Framework中不存在Application.ProductVersion属性。您答案的最后一部分仍然适用。
还有一个问题: 这些属性(major、minor、build、revision)是否会自动增加,还是我可以随时设置它们?在我看来,修订版本应该随着每个新版本自动增加。
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Major:获取当前程序集的主版本号 System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Minor:获取当前程序集的次版本号 System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Build:获取当前程序集的内部版本号 System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Revision:获取当前程序集的修订号
来源:http://msdn.microsoft.com/en-us/library/system.version.aspx
(编辑)
Application.ProductVersion 属性
获取与此应用程序关联的产品版本。
Compact Framework 中不可用,但 System.Reflection.Assembly.GetExecutingAssembly().GetName().Version 可以使用。
来源:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.productversion.aspx
您还可以使用Version.ToString(),并将要返回的组件数量作为参数传递:
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(3)
此行返回Major.Minor.Build
来源:http://msdn.microsoft.com/en-us/library/bff8h2e1(VS.80).aspx
在您的项目中有一个AssemblyInfo.cs文件,您可以在其中编辑您的程序集版本。要自动增加修订版本,您可以使用类似于1.0.3200.*的内容。
来源:http://msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute(VS.80).aspx
ToString()
方法来获取完整的版本字符串。 - dan-gph我知道这是一个老问题,但是这里有一个解决方案,我使用反射和Linq找到了它(重新发布自我的答案在此处)。
首先,我在AssemblyInfo.cs中添加了以下内容(使用您想要使用的字符串进行替换):
[assembly: AssemblyInformationalVersion("1.0.0.0 Alpha")]
然后,您可以使用此方法提取属性(我将其放置在AssemblyInfo.cs文件中的静态类中)。该方法获取所有程序集属性的数组,然后选择与属性名称匹配的第一个结果(并将其转换为适当的类型)。然后可以访问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;
}
}
//using System.Reflection;
public static string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
要在.NET Compact Framework中显示产品版本(已测试使用2.0和3.5),您可以使用下面定义的AssemblyHelper.getProductVersion()。
例如,如果程序集版本在AssemblyInfo.cs文件中定义如下,则该方法的结果为“1.2.3”。
AssemblyInfo.cs文件摘录:
[assembly: AssemblyVersion("1.2.3")]
AssemblyHelper.cs 文件摘录:
using System;
using System.Reflection;
public static class AssemblyHelper
{
public static string getProductVersion()
{
Version assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version;
return String.Format("{0}.{1}.{2}", assemblyVersion.Major, assemblyVersion.Minor, assemblyVersion.Build);
}
}