Есть ли инструмент Microsoft для получения версии сборки DLL файла из командной строки?
(Я знаю, что я могу закодировать свой собственный инструмент.)
Есть ли инструмент Microsoft для получения версии сборки DLL файла из командной строки?
(Я знаю, что я могу закодировать свой собственный инструмент.)
Это область, где светит PowerShell. Если у вас его еще нет, установите его. Он предустановлен с Windows 7.
Запуск этой командной строки:
[System.Reflection.Assembly]::LoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
выводит это:
Major Minor Build Revision
----- ----- ----- --------
3 0 8 0
Обратите внимание, что LoadFrom возвращает объект сборки, поэтому вы можете делать практически все что угодно. Не нужно писать программу.
Если вы используете моно и Linux, попробуйте следующее:
monodis --assembly MyAssembly.dll
find . -name MyAssembly.dll -exec monodis --assembly {} ';' | grep Version
Для тех, как я, которые ищут такой инструмент:
using System;
using System.IO;
using System.Reflection;
class Program
{
public static void Main(string[] args)
{
foreach (string arg in args)
{
try
{
string path = Path.GetFullPath(arg);
var assembly = Assembly.LoadFile(path);
Console.Out.WriteLine(assembly.GetName().FullName);
}
catch (Exception exception)
{
Console.Out.WriteLine(string.Format("{0}: {1}", arg, exception.Message));
}
}
}
}
В Powershell
$version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("filepath.exe").FileVersion.ToString()
Ничего себе, это плохо, учитывая то, что плагин вокруг gipplus.dll можно использовать в старых версиях.
Мое решение простое. пакетное файловое программирование.
Это ставит файл nfo в тот же каталог с версией
Вы можете GET filever.exe, который можно загрузить как часть пакета средств поддержки Windows XP SP2 - всего 4,7 МБ загрузки.
adobe_air_version.bat
c:\z\filever.exe /A /D /B "C:\Program Files\Common Files\Adobe AIR\Versions\1.0\Adobe AIR.dll" >000_adobe_air.dll_VERSION.nfo
exit
Изменение.
Получите все версии в каталоге в текстовый файл.
c:\z\filever.exe /A /D /B "c:\somedirectory\ *.dll *.exe >000_file_versions.nfo
exit
Там также Sigcheck by systernals.
http://technet.microsoft.com/en-us/sysinternals/bb897441.aspx
Я использовал выбранный ответ, пока не получил следующую ошибку
Reference assemblies should not be loaded for
execution. They can only be loaded in the Reflection-only loader context.
для нескольких сборок
используя
[System.Reflection.Assembly]::ReflectionOnlyLoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
должен работать в этих случаях (возможно, во всех случаях)
Инструмент "Версия файла" поможет:
filever /V YourDllName.dll
Добавление сахара к другим ответам powershell-ish...
Чтобы получить расширенные свойства, такие как 'FullName'
$dllPath = "C:\full\path\to\YourDllName.dll";
$ass = [System.Reflection.Assembly]::LoadFrom($dllPath);
$ass.GetName();
$ass
Вы используете GACUTIL?
Вы можете получить версию сборки из этой команды ниже.
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\gacutil.exe /L "<your assembly name>"