Existe-t-il un outil Microsoft pour obtenir la version d'assemblage d'un fichier DLL à partir d'une ligne de commande?Version d'assemblage à partir de la ligne de commande?
(je sais que je peux coder mon propre outil.)
Existe-t-il un outil Microsoft pour obtenir la version d'assemblage d'un fichier DLL à partir d'une ligne de commande?Version d'assemblage à partir de la ligne de commande?
(je sais que je peux coder mon propre outil.)
C'est un domaine où brille PowerShell. Si vous ne l'avez pas déjà, installez-le. Il est pré-installé avec Windows 7.
L'exécution de cette ligne de commande:
[System.Reflection.Assembly]::LoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
sorties ceci:
Major Minor Build Revision
----- ----- ----- --------
3 0 8 0
Notez que LoadFrom returnes un objet de montage, de sorte que vous pouvez faire quoi que ce soit à peu près que vous aimez. Pas besoin d'écrire un programme.
Pour ceux qui, comme moi, qui viennent à la recherche d'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));
}
}
}
}
Ces petits morceaux de code sont les meilleurs (et plus faciles à maintenir) lorsqu'ils sont conservés sous forme de scripts. Je recommande fortement le projet cs-script pour réaliser ceci. –
Wow c'est mal vu des choses comme vieux gdiplus.dll flottant autour de exploitable.
Ma solution est simple. programmation par lots.
Cela met un fichier nfo dans le même répertoire avec la version
Vous pouvez obtenir Filever.exe, qui peut être téléchargé dans le cadre du Service Pack 2 Windows XP Support Package Outils - seulement 4.7MB de téléchargement.
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 by systernals.
http://technet.microsoft.com/en-us/sysinternals/bb897441.aspx
outil version du fichier vous aidera:
filever /V YourDllName.dll
Quoi et où est-ce? – Brannon
Il était sous XP http://support.microsoft.com/kb/913111 –
Il est dans [Windows XP Service Pack 2 Outils de support] (http://www.microsoft.com/en-us/download/ details.aspx? id = 18546). Cependant, ceci ne peut être installé que sur un système XP. SO, pour obtenir le fichier pour Win7/8, 'décompressez' l'installation exe avec un outil comme 7-Zip. Extrayez le fichier 'support.cab' à l'intérieur. Puis encore une fois, décompressez ce CAB en utilisant 7-Zip et vous pouvez obtenir 'filever.exe'. – laifukang
Si vous utilisez mono et linux, essayez ceci:
monodis --assembly MyAssembly.dll
find . -name MyAssembly.dll -exec monodis --assembly {} ';' | grep Version
utilisez-vous GACUTIL?
Vous pouvez obtenir la version d'assemblage à partir de cette commande ci-dessous.
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\gacutil.exe /L "<your assembly name>"
/l [
Cela ne fonctionne pas pour moi si j'ai un assemblage local, par ex. dans un paquet NUGET. Gacutil ne fonctionne que pour les assemblages dans le GAC. – Matt
En Powershell
$version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("filepath.exe").FileVersion.ToString()
J'ai utilisé la réponse choisie jusqu'à ce que je l'erreur suivante Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context.
pour plusieurs ensembles
utilisant
[System.Reflection.Assembly]::ReflectionOnlyLoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
devrait fonctionner dans les cas (probablement tous les cas)
Y a-t-il un moyen de faire cela fonctionner dans les assemblages en mode mixte? –
Je m'attendrais à ce qu'il fonctionne de manière similaire. Mes tests ont échoué, cependant, avec un message d'erreur indiquant que la version d'exécution de l'assembly en mode mixte est plus récente que celle chargée - ne savez pas comment contourner cela. – OregonGhost
Pour obtenir uniquement le numéro de version, ajoutez '.ToString()' à la fin, par ex. '[System.Reflection.Assembly] :: LoadFrom (" YourDllName.dll "). GetName(). Version.ToString()' –