如何检查程序集的版本(DLL)?

use*_*570 24 .net c# .net-assembly

我有c#应用程序,当我进行更改时,我收到错误消息:

WindowsFormsApplication1.exe中发生了未处理的"System.TypeLoadException"类型异常

附加信息:无法
从程序集"TIProData,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null" 加载类型"TradeIdeas.TIProData.OddsMakerColumnConfiguration".

此消息表示dll(TIProData)的版本号为1.0.0.0.我认为有更新版本可用.如何判断机器上的dll版本号?

Pat*_*man 33

您可以使用反射器,ILDASMILSpy获取程序集版本.

您通常可以找到ILDASM C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ildasm.exe(v8.1A安装的Windows SDK的版本).

ILDASM:

ILDASM

反射:

反射器

  • 或者 [Jetbrains dotPeek](https://www.jetbrains.com/decompiler/),它也是免费的。 (5认同)
  • 顺便说一句,微软把这么基本的东西做得有多难是荒谬的 (3认同)

Jam*_*cas 5

AssemblyName.GetAssemblyName(string path)您可以从一个小实用程序应用程序中使用。

更多详细信息请参见MSDN


Pio*_*ski 5

有几种方法可以做到:

  • 如果您在 Visual Studio 中引用该 dll,请右键单击它(在 ProjectName/References 文件夹中)并选择“属性”,您在那里有“版本”和“运行时版本”。

  • 在文件资源管理器中,当您右键单击 dll 文件并选择属性时,那里会出现“文件版本”和“产品版本”。

  • 或者,在代码中调查它:

    Assembly assembly = Assembly.LoadFrom("TestAssembly.dll");
    Version ver = assembly.GetName().Version;
    
    Run Code Online (Sandbox Code Playgroud)

  • 注意 - 属性选项卡中显示的“FileVersion”与 AssemblyVersion 不同,AssemblyVersion 是用于绑定重定向或程序集加载的 ID。 (2认同)