Что такое "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 и т. Д. ( Источник)

Другие вопросы по тегам