【问题标题】:Version number in .NET Compact Framework application.NET Compact Framework 应用程序中的版本号
【发布时间】:2009-02-09 21:48:02
【问题描述】:

我需要在屏幕上显示 .NET Compact Framework 版本号。我正在使用 .NET CF 2.0 和 Windows CE 4.0。

到目前为止,我一直完全忽略版本号。我需要向程序集添加任何内容吗?如何以编程方式检索它?


很遗憾,这不适用于 Compact FrameworkApplication.ProductVersion 属性在 Compact Framework 中不存在。不过,您的答案的最新部分适用。

还有一个问题: 这些属性(主要、次要、构建、修订)会自动增加还是我想随时设置它们?在我看来,修订版应该随着每个新版本自动增加。

【问题讨论】:

    标签: .net compact-framework


    【解决方案1】:

    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

    【讨论】:

    • 添加更正,Application.ProductVersion 在 CF 中不可用
    【解决方案2】:

    【讨论】:

    • 或者你可以使用不带参数的ToString()来获取完整的版本字符串。
    【解决方案3】:

    我知道这是一个老问题,但这是我使用 Reflection 和 Linq 找到的解决方案(转自 my answer here)。

    首先,我将其添加到 AssemblyInfo.cs(将字符串替换为您想要使用的任何内容):

    [assembly: AssemblyInformationalVersion("1.0.0.0 Alpha")]
    

    然后,您可以使用此方法提取属性(我将其放在 AssemblyInfo.cs 文件中的静态类中)。方法 get 是所有 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();
        }
    }
    

    【讨论】:

      【解决方案4】:

      要使用 .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);
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-31
        • 2010-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 2010-12-15
        相关资源
        最近更新 更多