如何从调用应用程序获取版本信息

时间:2010-06-22 21:35:19

标签: c# version assemblies

我有一个用C#编写的Web应用程序,在IIS下作为dll运行。

我也有一些常见的代码编译成一个单独的程序集(dll)。此公共代码包含一个返回版本信息的函数(如下所示)。如何修改此代码以便它返回Web应用程序DLL的版本信息而不是公共代码dll?

...
    private static Assembly _assy;

    private static void CheckAssemblyInfoLoaded()
    {
      if (_assy == null)
      {
        _assy = Assembly.GetCallingAssembly();
      }
    }

    public static string Version
    {
      get {
        CheckAssemblyInfoLoaded();
        Version v = _assy.GetName().Version;
        return v.ToString();
      }
    }
...

2 个答案:

答案 0 :(得分:1)

使用Assembly.GetAssembly(Type type)方法获取程序集引用,在该方法中传入该程序集中定义的任何对象的类型,例如Assembly.GetAssembly(typeof(MyClass));

答案 1 :(得分:0)

就个人而言,我会放弃静态并将方法合并为一个。

    public string GetVersion()
    {
        Assembly assy = Assembly.GetCallingAssembly();
        Version v = assy.GetName().Version;
        return v.ToString();
    }

此场景中的静态可能会产生一些不需要的结果。我还将属性更改为方法;个人设计选择。

你得到错误的程序集,因为属性get方法从同一程序集中的另一个方法反弹,从而改变了调用者。