C# .NET中dll的版本号

C# .NET中dll的版本号,c#,.net,dll,versioning,C#,.net,Dll,Versioning,鉴于以下情况: string file = @"c:\somepath\somefile.dll"; 如何使用.NET查找该DLL的文件和产品版本号 dll可以是本机的,也可以是托管的 谢谢。我不知道本机DLL,但对于托管DLL,它的工作原理如下: System.Reflection.Assembly.LoadFile(file).GetName().Version 编辑:我认为您可以使用GetFileVersionInfo()…是,使用来读取C中的版本信息 请注意,程序集的文件版本可能与其

鉴于以下情况:

string file = @"c:\somepath\somefile.dll";
如何使用.NET查找该DLL的文件和产品版本号

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


谢谢。

我不知道本机DLL,但对于托管DLL,它的工作原理如下:

System.Reflection.Assembly.LoadFile(file).GetName().Version
编辑:我认为您可以使用
GetFileVersionInfo()

是,使用来读取C中的版本信息


请注意,程序集的文件版本可能与其程序集版本不同。程序集版本是程序集标识的一部分。

如果需要文件版本信息,请使用
FileVersionInfo
类()

如果需要程序集版本,则需要使用反射加载该程序集。有一个示例说明如何在上执行此操作


在Windows中,“文件版本”和“产品版本”是相同的(至少对于托管.dll是相同的)。

程序集中有三个版本号。有关它们采用的值、谁使用它们以及如何读取它们的信息,请参阅

对于.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的建议,具体取决于publisher如何分配版本和生成。

请注意:返回的是程序集版本,而不是文件版本。两者可能有所不同。它也不同于win32函数GetFileVersionInfo,后者返回文件版本而不是程序集版本。这不也是加载程序集,包括执行静态构造函数吗?是的。但我相信在使用静态构造函数的类之前不会调用它们。例如,在应用程序启动时不会调用静态CTOR,而是在您首次使用该类的静态方法或实例化对象时调用。但我可能记错了。Jon?谢谢Lars,我忽略了FileVersionInfo类。这个FileVersionInfo类有问题。我找不到它。我尝试使用名称空间System::Diagnostics,但它不在Diagnostics中。我尝试CLR项目,空C++项目,我链接版本。请提供帮助。请注意FileVersionInfo.FileVersion是一种可能不是最新的字符串表示形式。您应该查看FileVersionInfo.FileMajorPart、FileMinorPart、FileBuildPart、FilePrivatePart。请参阅受管DLL的文件版本和产品版本也可能不同。[AssemblyFileVersion]与[AssemblyInformationalVersion]。看到和
 FileVersionInfo fi = FileVersionInfo.GetVersionInfo(path);
 string fileVersion = fi.FileVersion;
string version=System.Reflection.Assembly.GetExecutingAssembly()
    .GetName().Version.ToString();