【问题标题】:How to check the version of an assembly (dll)?如何检查程序集(dll)的版本?
【发布时间】:2015-04-21 12:20:32
【问题描述】:

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

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

附加信息:无法加载类型
来自程序集的“TradeIdeas.TIProData.OddsMakerColumnConfiguration” 'TIProData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'。

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

【问题讨论】:

  • 右键单击 DLL 转到属性 > 详细信息。版本 1.0.0.0 看起来像是 DLL 的开发版本
  • 那是文件版本,不是汇编版本@AlexAnderson
  • 在文本编辑器中打开csproj文件,找到那个dll引用,你可以在那里更改版本,好像有1.0.0.0硬编码

标签: c# .net .net-assembly


【解决方案1】:

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

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

ILDASM:

反射器:

【讨论】:

  • @Stijn:已添加。谢谢。
  • Jetbrains dotPeek,也是免费的。
  • 顺便说一句,微软做出如此基本的东西有多难是荒谬的
【解决方案2】:

有几种方法可以做到:

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

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

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

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

【讨论】:

  • 警告 - 属性选项卡中显示的“FileVersion”与 AssemblyVersion 不同,后者是用于绑定重定向或程序集加载的 id。
【解决方案3】:

您可以通过一个小实用应用程序使用AssemblyName.GetAssemblyName(string path)

更多详情请访问MSDN

【讨论】:

    【解决方案4】:

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

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

    字符串ver=RuntimeVersion.Version;

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2013-02-21
      • 2017-02-27
      • 2019-07-30
      • 1970-01-01
      相关资源
      最近更新 更多