Как определить версию файла DLL-файла в Compact Framework 3.5

Я хочу определить версию файла DLL-файла в "C#", когда путь указан. Предположим, путь = "\x\y\z.dll" .

Как найти версию файла z.dll, когда указан путь?

ПРИМЕЧАНИЕ: я использую Compact Framework 3.5 SP1

2 ответа

Решение

Нормальные рамки

Если это.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

Вы можете проверить этот вопрос stackru. В уникальном ответе у вас есть ссылка на блог с кодом, который решает вашу проблему.

// 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.

Другие вопросы по тегам