是否有Microsoft工具从命令行获取DLL文件的汇编版本?
(我知道我可以编写自己的工具。)
答案 0 :(得分:86)
这是PowerShell闪耀的领域。如果您还没有,请安装它。它预装了Windows 7。
运行此命令行:
[System.Reflection.Assembly]::LoadFrom("C:\full\path\to\YourDllName.dll").GetName().Version
输出:
Major Minor Build Revision
----- ----- ----- --------
3 0 8 0
请注意,LoadFrom会返回一个程序集对象,因此您可以执行任何您喜欢的操作。无需编写程序。
答案 1 :(得分:15)
如果你使用mono和linux,试试这个:
monodis --assembly MyAssembly.dll
find . -name MyAssembly.dll -exec monodis --assembly {} ';' | grep Version
答案 2 :(得分:9)
对于像我这样的人,他们来寻找这样的工具:
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));
}
}
}
}
答案 3 :(得分:5)
在Powershell中
$version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("filepath.exe").FileVersion.ToString()
答案 4 :(得分:2)
我使用了所选答案,直到出现以下错误
几个集会的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
应该适用于那些情况(可能是所有情况)
答案 5 :(得分:1)
哇,这很糟糕,考虑到旧的可利用的gdiplus.dll漂浮在周围。
我的解决方案很简单。批处理文件编程。
这会将nfo文件放在与版本
相同的目录中您可以使用GET filever.exe(可以作为Windows XP SP2支持工具包的一部分下载) - 仅下载4.7MB。
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。
http://technet.microsoft.com/en-us/sysinternals/bb897441.aspx
答案 6 :(得分:0)
文件版本工具将有所帮助:
filever /V YourDllName.dll
答案 7 :(得分:0)
在其他类似于powershell的答案中添加糖...
获取扩展的属性,例如“ FullName”
$dllPath = "C:\full\path\to\YourDllName.dll";
$ass = [System.Reflection.Assembly]::LoadFrom($dllPath);
$ass.GetName();
$ass
答案 8 :(得分:-1)
您使用GACUTIL吗?
您可以从下面的命令中获取程序集版本。
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\gacutil.exe /L "<your assembly name>"