代码之家  ›  专栏  ›  技术社区  ›  Sam

在windows phone 7上获取程序集版本

  •  12
  • Sam  · 技术社区  · 15 年前

    在我的c#应用程序中,我通常使用以下代码获得版本(以向客户显示):

    System.Reflection.Assembly.GetExecutingAssembly().GetName().Version
    

    这在WindowsPhone7中不起作用(它挂起仿真器,手机崩溃对MS来说是不允许的)。

    那么,如何获取在WindowsPhone7设备上执行的版本??

    [更新]如下面的注释所述,在wp7应用程序中调用GetName()似乎是问题所在。

    4 回复  |  直到 15 年前
        1
  •  22
  •   Matt Lacey    15 年前

    试试这个:

        private static string GetVersionNumber()
        {
            var asm = Assembly.GetExecutingAssembly();
            var parts = asm.FullName.Split(',');
            return parts[1].Split('=')[1];
        }
    
        2
  •  2
  •   Mick N    15 年前

    是否解析它

    Assembly.GetExecutingAssembly().FullName

    为你工作?

    示例输出:SomeApp,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null

    编辑:不需要通过ManifestModule

        3
  •  1
  •   Rafael Dowling Goodman    13 年前

    首先,我认为使用程序集的文件版本信息将应用程序版本传递给用户更为合适。见 http://techblog.ranjanbanerji.com/post/2008/06/26/Net-Assembly-Vs-File-Versions.aspx

    第二,这样做怎么样:

    using System;
    using System.Linq;
    using System.Reflection;
    
    public static class AssemblyExtensions
    {
        public static Version GetFileVersion(this Assembly assembly)
        {
            var versionString = assembly.GetCustomAttributes(false)
                .OfType<AssemblyFileVersionAttribute>()
                .First()
                .Version;
    
            return Version.Parse(versionString);
        }
    }
    
        4
  •  1
  •   Trevor Kennedy    13 年前
     public static string GetVersion()
        {
            return Regex.Match(Assembly.GetExecutingAssembly().FullName, @"Version=(?<version>[\d\.]*)").Groups["version"].Value;
        }
    

    也相当干净。