Existe-t-il un outil Microsoft permettant d’obtenir la version Assembly d’un fichier DLL à partir d’une ligne de commande?
(Je sais que je peux coder mon propre outil.)
C'est un domaine où PowerShell brille. Si vous ne l'avez pas déjà, installez-le. Il est préinstallé avec Windows 7.
Lancer cette ligne de commande:
[System.Reflection.Assembly]::LoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
affiche ceci:
Major Minor Build Revision
----- ----- ----- --------
3 0 8 0
Notez que LoadFrom renvoie un objet Assembly, vous pouvez donc faire à peu près tout ce que vous voulez. Pas besoin d'écrire un programme.
Si vous utilisez mono et linux, essayez ceci:
monodis --Assembly MyAssembly.dll
find . -name MyAssembly.dll -exec monodis --Assembly {} ';' | grep Version
Pour ceux qui, comme moi, viennent chercher un tel outil:
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()
J'ai utilisé la réponse sélectionnée jusqu'à ce que l'erreur suivante apparaisse Reference assemblies should not be loaded for
execution. They can only be loaded in the Reflection-only loader context.
pour plusieurs assemblages
en utilisant
[System.Reflection.Assembly]::ReflectionOnlyLoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
devrait fonctionner dans ces cas (probablement tous les cas)
Wow, c'est mauvais si l'on considère des choses comme les anciens gdiplus.dll exploitables qui flottent.
Ma solution est simple. programmation par lots.
Cela met un fichier nfo dans le même répertoire que la version
Vous pouvez obtenir le fichier filever.exe, qui peut être téléchargé avec le package Windows XP SP2 Support Tools - téléchargement de seulement 4,7 Mo.
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
Variation.
Obtenez toutes les versions d'un répertoire dans un fichier texte.
c:\z\filever.exe /A /D /B "c:\somedirectory\ *.dll *.exe >000_file_versions.nfo
exit
Il y a aussi Sigcheck par systernals.
http://technet.Microsoft.com/en-us/sysinternals/bb897441.aspx
L'outil de version de fichier vous aidera à:
filever /V YourDllName.dll
Ajouter du sucre aux autres réponses éclairées ...
Pour obtenir des propriétés étendues telles que 'FullName'
$dllPath = "C:\full\path\to\YourDllName.dll";
$ass = [System.Reflection.Assembly]::LoadFrom($dllPath);
$ass.GetName();
$ass