.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的建议,具体取决于发布商如何选择分配版本和构建。