命令行的汇编版本?

时间:2010-06-14 12:00:59

标签: dll visual-studio-2010 assemblies version

是否有Microsoft工具从命令行获取DLL文件的汇编版本?

(我知道我可以编写自己的工具。)

9 个答案:

答案 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>"