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

时间:2010-01-25 20:13:31

标签: c# .net

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

使用Application.ProductVersion确定我的解决方案的产品版本很容易。但是,我真正需要的是一种在我的程序中单独确定exe文件版本和dll的方法。我想在我的关于对话框中显示dll和exe的文件版本。代码看起来会是什么样的?

3 个答案:

答案 0 :(得分:21)

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

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

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

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

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

答案 1 :(得分:3)

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

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

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

当然,一旦你将你的类型转移到另一个组件中,这将会在巨大的火球中爆炸。如果有可能,您将需要一种更健壮的方法来查找装配对象。如果是这种情况,请告诉我。

答案 2 :(得分:2)

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

Assembly.GetExecutingAssembly.GetName.Version.ToString()

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

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