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

问题描述 投票:0回答:5

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

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

附加信息:无法加载类型
程序集中的“TradeIdeas.TIProData.OddsMakerColumnConfiguration” “TIProData,版本=1.0.0.0,文化=中性,PublicKeyToken=null”。

此消息表示 dll (TIProData) 的版本号是 1.0.0.0。我认为有更高版本可用。如何知道我的机器上 dll 的版本号?

c# .net .net-assembly
5个回答
75
投票

您可以使用 ReflectorILDASMILSpy 获取程序集版本。

您通常可以在

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ildasm.exe
中找到 ILDASM(其中
v8.1A
是安装的 Windows SDK 的版本)。

伊达斯姆:

ildasm

反光镜:

reflector


8
投票

有几种方法可以做到这一点:

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

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

  • 或者,在代码中研究它:

    Assembly assembly = Assembly.LoadFrom("TestAssembly.dll");
    Version ver = assembly.GetName().Version;
    

3
投票

如果你知道属于程序集的Class,你可以使用GetTypeInfo

var runtimeVersion = typeof(MyClass)
.GetTypeInfo()
.Assembly
.GetCustomAttribute<AssemblyFileVersionAttribute>();

var version = runtimeVersion.Version;

 

该示例适用于.Net Core 来自 https://developers.de/blogs/damir_dobric/archive/2017/06/27/how-to-deal-with- assembly-version-in-net-core.aspx


2
投票

您可以从一个小实用程序应用程序中使用

AssemblyName.GetAssemblyName(string path)

更多详细信息请参见 MSDN


2
投票

来自 Powershell(PSCore):

$assembly = [System.Reflection.Assembly]::LoadFrom("$pwd\System.Memory.dll")
除了
$assembly.FullName
之外,你还可以从物体上拾取任何其他道具。

© www.soinside.com 2019 - 2024. All rights reserved.