在C#中确定引用的dll文件版本

14
我有一个引用来自不同 C# 解决方案的 dll 的 C# 解决方案。
使用 Application.ProductVersion 可以很容易地确定我的解决方案的产品版本。然而,我真正需要的是在程序中分别确定 exe 和 dll 的文件版本。我想要在关于对话框里显示 dll 和 exe 的文件版本。实现这个功能需要什么代码?
3个回答

27

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

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

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

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

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

1
谢谢;我想在.NET中肯定有一种简单的方法来做到这一点,但我一直没有找到。当我在寻找解决方案时,我认为让我困惑的是GetName()...我甚至没有看它,因为我以为它只会返回一个字符串或类似的东西。 - Professor Mustard

4
也许最简单的解决方案是这样的:
var version = Assembly.GetAssembly(typeof(SomeType)).GetName().Version;

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

当然,一旦将类型移动到另一个程序集中,这将会引发巨大的错误。如果可能出现这种情况,则需要更可靠的方法来查找程序集对象。如果是这种情况,请告诉我。


3

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

Assembly.GetExecutingAssembly.GetName.Version.ToString()

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

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

以上代码可用于获取当前执行的程序集所引用的所有程序集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接