我想在指定路径时确定'c#'中dll文件的文件版本。 假设path =“\ x \ y \ z.dll”。
如何在给出路径时找到z.dll的文件版本?
注意:我使用Compact Framework 3.5 SP1
答案 0 :(得分:8)
// Get the file version for the notepad.
FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(Environment.SystemDirectory + "\\Notepad.exe");
// Print the file name and version number.
Console.WriteLine("File: " + myFileVersionInfo.FileDescription + '\n' +
"Version number: " + myFileVersionInfo.FileVersion);
来自:http://msdn.microsoft.com/en-us/library/system.diagnostics.fileversioninfo.fileversion.aspx
所以对你:
FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(@"\x\y\z.dll");
如果dll是.net或Win32,则此方法有效。只有当dll是.net。
时,反射方法才有效答案 1 :(得分:1)
普通框架
如果是.NET DLL,则可以使用Reflection。
using System.Reflection;
Assembly assembly = Assembly.LoadFrom("\x\y\z.dll");
Version ver = assembly.GetName().Version;
如果没有,您可以使用System.Diagnostics:
using System.Diagnostics;
static string GetDllVersion(string dllPath)
{
FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(dllPath);
return myFileVersionInfo.FileVersion;
}
// Sample invokation
string result = GetDllVersion(@"C:\Program Files (x86)\Google\Chrome\Application\20.0.1132.57\chrome.dll");
// result value **20.0.1132.57**
紧凑框架
如果您使用的是 .NET Compact Framework ,则无法访问 FileVersionInfo
您可以查看stackoverflow question。在唯一的答案中,您有一个link博客,其中的代码可以解决您的问题。