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

mzsu5hc0  于 2023-02-26  发布在  .NET
关注(0)|答案(5)|浏览(570)

我有C#应用程序,当我做了更改,我得到错误消息:
WindowsFormsApplication1.exe中发生类型为"System.TypeLoadException"的未经处理的异常
补充信息:无法加载类型
来自程序集"TIProData,版本= 1.0.0.0,区域性=非特定,公钥标记= null"的"TradeIdeas. TIProData. OddsMakerColumnConfiguration"。
这个消息说dll(TIProData)的版本号是1.0.0.0。我想有一个更高的版本可用。我如何知道我的机器上的dll的版本号?

wr98u20j

wr98u20j1#

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

反射器:

ktca8awb

ktca8awb2#

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

  • 如果您在Visual Studio中引用dll,请右键单击它(在ProjectName/References文件夹中)并选择“属性”,您将在其中看到“版本”和“运行时版本”。
  • 在文件资源管理器中,当您右键单击dll文件并选择属性时,会出现“文件版本”和“产品版本”。
  • 或者,在代码中进行调查:
Assembly assembly = Assembly.LoadFrom("TestAssembly.dll");
Version ver = assembly.GetName().Version;
kxxlusnw

kxxlusnw3#

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

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

字符串ver=运行时版本。版本;
此示例适用于https://developers.de/blogs/damir_dobric/archive/2017/06/27/how-to-deal-with-assembly-version-in-net-core.aspx中的.Net Core

zsbz8rwp

zsbz8rwp4#

你可以从一个小的util应用程序中使用AssemblyName.GetAssemblyName(string path)
更多详情请参见MSDN

am46iovg

am46iovg5#

来自Powershell(PSCore):$assembly = [System.Reflection.Assembly]::LoadFrom("$pwd\System.Memory.dll")除了$assembly.FullName之外,您可以从对象中拾取任何其他 prop 。

相关问题