.NET中dll的版本号

时间:2009-10-08 13:14:48

标签: c# .net dll versioning

鉴于以下内容:

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

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

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

感谢。

6 个答案:

答案 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() ...

阅读C中的版本信息

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