Что такое "Framework Framework" в журналах событий Windows?
Я отлаживаю сбой приложения C#. Сбой происходит при вызове внешней, собственной библиотеки DLL.
Журнал событий Windows содержит следующий отчет. Я нацеливаюсь на .NET 4.5 (в Visual Studio), и на целевом ПК установлена .NET 4.5.2.
Мой вопрос: почему версия Framework указывает v4.0.30319? Для меня это выглядит так, будто приложение работает в неправильной среде.NET.
Application: XXXXXXX.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AccessViolationException
Stack:
at XXXXXXX.SVcamApi+NativeMethods.SVInterfaceGetDeviceId_64(Void*, UInt32, SByte*, UInt32*)
at XXXXXXX.SVcamApi+NativeMethods.SVInterfaceGetDeviceId_64(Void*, UInt32, SByte*, UInt32*)
at XXXXXXX.SVcamApi.SVS_InterfaceGetDeviceId(IntPtr, UInt32, System.String ByRef, UInt32 ByRef)
at XXXXXXX.XXXXXXX+Cameracontainer.deviceDiscovery()
at XXXXXXX.XXXXXXX.buttonDiscover_Click(System.Object, System.EventArgs)
at XXXXXXX.XXXXXXX.DiscoverAndConnect()
at XXXXXXX.XXXXXXX..ctor()
at XXXXXXX.Program.Main()
Я подтвердил, что 4.5.2 устанавливается с помощью утилиты Raymondcc .NET Detector: https://www.raymond.cc/blog/how-to-check-what-version-of-microsoft-net-framework-is-installed-in-computer/
Удивительно, но.NET Detector показывает, что 4.0 даже не установлен; он показывает 2, 3, 3.5 и 4.5.2 как установлено.
1 ответ
То, что вы видите, - это версия CLR, Common Language Runtime. Каждая версия.NET, начиная с 4.0, работает на версии 4.0.30319 CLR, поэтому это число можно увидеть даже для приложения.NET 4.5.2.
Версия clr действительно изменяется между фреймворками, просто разница еще больше в номере версии. Например.NET 4.0 работает на CLR 4.0.30319.0 до 4.0.30319.17000,.NET 4.5 работает на CLR 4.0.30319.17001 до 4.0.3019.18400 и т. Д. ( Источник)