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();