3

当指定路径时,我想确定 'c#' 中 dll 文件的文件版本。假设 path = "\x\y\z.dll" 。

给出路径时如何查找 z.dll 的文件版本?

注意:我使用 Compact Framework 3.5 SP1

4

2 回答 2

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 时才有效。

于 2012-07-25T08:00:42.503 回答
2

正常框架

如果它是一个 .NET DLL,您可以使用反射。

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 问题。在唯一答案中,您有一个博客链接,其中包含解决您问题的代码。

于 2012-07-25T08:02:28.477 回答