【发布时间】:2010-12-04 23:53:56
【问题描述】:
鉴于以下情况:
string file = @"c:\somepath\somefile.dll";
如何使用 .NET 找到该 DLL 的文件和产品版本号?
dll 可以是本地的也可以是托管的。
谢谢。
【问题讨论】:
标签: c# .net dll versioning
鉴于以下情况:
string file = @"c:\somepath\somefile.dll";
如何使用 .NET 找到该 DLL 的文件和产品版本号?
dll 可以是本地的也可以是托管的。
谢谢。
【问题讨论】:
标签: c# .net dll versioning
是的,使用System.Diagnostics.FileVersionInfo。
string fileVersion = FileVersionInfo.GetVersionInfo(file).FileVersion;
string productVersion = FileVersionInfo.GetVersionInfo(file).ProductVersion;
请注意,程序集的文件版本可能与其程序集版本不同。程序集版本是程序集标识的一部分。
【讨论】:
我不了解原生 dll,但使用托管 dll 的工作方式如下:
System.Reflection.Assembly.LoadFile(file).GetName().Version
编辑:我认为您可以使用 GetFileVersionInfo()... 阅读 C 中的版本信息...
【讨论】:
FileVersionInfo fi = FileVersionInfo.GetVersionInfo(path);
string fileVersion = fi.FileVersion;
在 Windows 中,“文件版本”和“产品版本”是相同的(或至少对于托管 .dll 而言)。
【讨论】:
一个程序集中有三个版本号。有关它们采用什么值、谁使用它们以及如何阅读它们的信息,请参阅http://all-things-pure.blogspot.com/2009/09/assembly-version-file-version-product.html。
【讨论】:
如果您想要文件版本信息,请使用 FileVersionInfo 类 (FileVersionInfo documentation)
如果您需要程序集版本,则需要使用反射加载该程序集。 code plex上有一个例子说明如何做到这一点
【讨论】:
.net 程序集文件版本可能是 1.0.、1.1. 1.2.、2.0. 等等 换句话说,发布者可以选择修复项目的主要和次要版本,但将其余部分留给 .net 进行编译和增量。 另一方面
string version=System.Reflection.Assembly.GetExecutingAssembly()
.GetName().Version.ToString();
将给出完整的版本号以及主要、次要、内部版本号
上面的c#代码在执行.exe和执行.dll时起作用
当然,如果您尝试使用某人的 dll,您可以使用 Eclipsed4utoo 或 EricSchaefer 的建议,具体取决于发布者如何选择分配版本和构建。
【讨论】: