.NET中dll的版本号

鉴于以下内容:

string file = @"c:\somepath\somefile.dll"; 

如何使用.NET查找该DLL的文件和产品版本号?

dll可以是本机的,也可以是托管的。

谢谢。

是的,使用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文档 )

如果您需要assembly版本,则需要使用reflection加载该assembly。 有一个如何在代码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的建议,具体取决于发布商如何选择分配版本和构建。