我有一个C#解决方案,它引用了我用不同的C#解决方案创建的dll。
使用Application.ProductVersion确定我的解决方案的产品版本很容易。但是,我真正需要的是一种在我的程序中单独确定exe文件版本和dll的方法。我想在我的关于对话框中显示dll和exe的文件版本。代码看起来会是什么样的?
答案 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();