【问题标题】:Determine referenced dll file version in C#在 C# 中确定引用的 dll 文件版本
【发布时间】:2010-01-25 20:13:30
【问题描述】:

我有一个 C# 解决方案,它引用了我从另一个 C# 解决方案创建的 dll。

使用 Application.ProductVersion 很容易确定我的解决方案的产品版本。但是,我真正需要的是在我的程序中分别确定 exe 和 dll 的文件版本的方法。我想在“关于”对话框中显示 dll 和 exe 的文件版本。执行此操作的代码是什么样的?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    最简单的方法是如果您知道所引用程序集中的类型:

    AssemblyName name = typeof(MyCompany.MyLibrary.SomeType).Assembly.GetName();
    

    Assembly.GetName 返回一个 AssemblyName,其中有一个 Version 属性,指示程序集的版本。

    或者,您可以获取执行程序集(即 .exe)引用的所有程序集的程序集名称:

    AssemblyName[] names = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
    

    【讨论】:

    • 谢谢;我认为在 .NET 中必须有一种简单的方法来执行此操作,但我无法找到它。当我在寻找解决方案时,我认为让我感到震惊的是 GetName()...我什至没有看它,因为我认为它只会返回一个字符串或其他东西。
    【解决方案2】:

    也许最简单的解决方案是这样的:

    var version = Assembly.GetAssembly(typeof(SomeType)).GetName().Version;
    

    其中 SomeType 是您确定在该特定程序集中定义的类型。然后,您可以在此 version object 上调用 .ToString() 或查看其属性。

    当然,当您将您的类型移动到另一个程序集时,它会爆炸成一个巨大的火球。如果这是可能的,您将需要一种更可靠的方法来查找程序集对象。如果是这种情况,请告诉我。

    【讨论】:

      【解决方案3】:

      AssemblyInfo 类包含所有这些信息,因此您只需在代码中获取对程序集的引用。例如:

      Assembly.GetExecutingAssembly.GetName.Version.ToString()
      

      您可以通过各种方式获取项目中的其他程序集,例如

      var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();

      【讨论】:

        猜你喜欢
        • 2011-03-28
        • 2011-06-08
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多