Что такое «Framework Framework» в журналах событий Windows? - PullRequest
0 голосов
/ 01 мая 2018

Я отлаживаю сбой приложения 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 Ответ

0 голосов
/ 01 мая 2018

То, что вы видите, это версия 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 и т. Д. ( Source )

...