¿Hay una herramienta de Microsoft para obtener la versión de ensamblaje de un archivo DLL desde una línea de comandos?¿Versión de ensamblaje desde la línea de comandos?
(sé que puedo codificar mi propia herramienta.)
¿Hay una herramienta de Microsoft para obtener la versión de ensamblaje de un archivo DLL desde una línea de comandos?¿Versión de ensamblaje desde la línea de comandos?
(sé que puedo codificar mi propia herramienta.)
Esta es un área donde brilla PowerShell. Si aún no lo tienes, instálalo. Está preinstalado con Windows 7.
La ejecución de esta línea de comandos:
[System.Reflection.Assembly]::LoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
Muestra esto:
Major Minor Build Revision
----- ----- ----- --------
3 0 8 0
Tenga en cuenta que LoadFrom returnes un objeto de montaje, por lo que puede hacer casi cualquier cosa que te gusta. No es necesario escribir un programa.
Para aquellos que, como yo, que vienen en busca de una herramienta de este tipo:
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));
}
}
}
}
Estas piezas cortas de código son las mejores (y las más fáciles de mantener) cuando se guardan como scripts. Recomiendo encarecidamente el proyecto de script cs para lograr esto. –
Wow esto es malo teniendo en cuenta cosas como la edad gdiplus.dll explotable de flotando alrededor.
Mi solución es simple. programación de archivos por lotes.
Esto pone un archivo NFO en el mismo directorio con la versión
, usted puede obtener Filever.exe, que se puede descargar como parte del paquete de herramientas de soporte de Windows XP SP2 - solamente 4,7 MB de descarga.
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
Variación.
Obtenga todas las versiones en un directorio de un archivo de texto.
c:\z\filever.exe /A /D /B "c:\somedirectory\ *.dll *.exe >000_file_versions.nfo
exit
También hay Sigcheck por systernals.
http://technet.microsoft.com/en-us/sysinternals/bb897441.aspx
herramienta Versión del archivo ayudará:
filever /V YourDllName.dll
¿Qué y dónde es esto? – Brannon
Solía estar en XP http://support.microsoft.com/kb/913111 –
Está en [Windows XP Service Pack 2 Support Tools] (http://www.microsoft.com/en-us/download/ details.aspx? id = 18546). SIN EMBARGO, esto solo se puede instalar en un sistema XP. SO, para obtener el archivo para Win7/8, 'descomprimir' el exe de instalación con una herramienta como 7-Zip. Extraiga el archivo 'support.cab' dentro. Luego, una vez más, descomprime este CAB con 7-Zip y puedes obtener 'filever.exe'. – laifukang
Si utiliza mono y Linux, intente esto:
monodis --assembly MyAssembly.dll
find . -name MyAssembly.dll -exec monodis --assembly {} ';' | grep Version
¿Utiliza GACUTIL?
Puede obtener la versión de ensamblaje desde este comando a continuación.
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\gacutil.exe /L "<your assembly name>"
/l [
Eso no funciona para mí si tengo un ensamblado local, p. dentro de un paquete NUGET. Gacutil solo trabaja para asambleas en el GAC. – Matt
En Powershell
$version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("filepath.exe").FileVersion.ToString()
que utiliza la respuesta seleccionada hasta que llegué el siguiente error Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context.
durante varios montajes
utilizando
[System.Reflection.Assembly]::ReflectionOnlyLoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
deben trabajar en esos casos (probablemente todos los casos)
¿Hay alguna manera de hacer que esto funcione en ensambles de modo mixto? –
Espero que funcione de manera similar. Mis pruebas fallaron, sin embargo, con un mensaje de error que dice que la versión en tiempo de ejecución del ensamblaje en modo mixto es más nueva que la que se cargó, no sé cómo eludir esto. – OregonGhost
Para obtener solo el número de versión, agregue '.ToString()' al final, p. '[System.Reflection.Assembly] :: LoadFrom (" YourDllName.dll "). GetName(). Version.ToString()' –