鉴于以下内容:
string file = @"c:\somepath\somefile.dll";
如何使用.NET查找该DLL的文件和产品版本号?
dll可以是本机的,也可以是托管的。
感谢。
答案 0 :(得分:38)
是的,使用System.Diagnostics.FileVersionInfo。
string fileVersion = FileVersionInfo.GetVersionInfo(file).FileVersion;
string productVersion = FileVersionInfo.GetVersionInfo(file).ProductVersion;
请注意,程序集的文件版本可能与其程序集版本不同。程序集版本是程序集标识的一部分。
答案 1 :(得分:4)
我不知道本机dll但是使用托管dll它的工作原理如下:
System.Reflection.Assembly.LoadFile(file).GetName().Version
编辑:我认为您可以使用GetFileVersionInfo()
...
答案 2 :(得分:4)
FileVersionInfo fi = FileVersionInfo.GetVersionInfo(path);
string fileVersion = fi.FileVersion;
在Windows中,“文件版本”和“产品版本”是相同的(或者至少是托管的.dll)。
答案 3 :(得分:1)
程序集中有三个版本号。有关他们采用的值,使用者以及如何阅读这些值的信息,请参阅http://all-things-pure.blogspot.com/2009/09/assembly-version-file-version-product.html。
答案 4 :(得分:0)
如果您需要文件版本信息,请使用FileVersionInfo
类(FileVersionInfo documentation)
如果您需要装配版本,则需要使用反射加载该装配。有一个如何在code plex
上执行此操作的示例答案 5 :(得分:0)
.net程序集文件版本可能是1.0。,1.1。 1.2。,2.0。等等 换句话说,发布者可能会选择修复项目的主要版本和次要版本,但将剩下的版本留给.net进行编译和增量。 另一方面
string version=System.Reflection.Assembly.GetExecutingAssembly()
.GetName().Version.ToString();
将提供包含major,minor,build number的完整版本号
上述c#代码在执行.exe和执行.dll
时有效当然,如果您尝试使用某人的dll,您可以使用Eclipsed4utoo或EricSchaefer的建议,具体取决于发布商如何选择分配版本和构建。