.net - Windows 事件日志中引用的“框架版本”是什么?
问题描述
我正在调试 C# 应用程序崩溃。崩溃发生在对外部本地 DLL 的调用中。
Windows 事件日志包含以下报告。我的目标是.NET 4.5(在 Visual Studio 中)并且目标 PC 安装了.NET 4.5.2。
我的问题是:为什么 Framework Version 指示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()
我已经确认使用 Raymondcc .NET Detector 实用程序安装了 4.5.2: https ://www.raymond.cc/blog/how-to-check-what-version-of-microsoft-net-framework-is-安装在计算机/
令人惊讶的是,.NET 检测器表明甚至没有安装 4.0。它显示已安装的 2、3、3.5 和 4.5.2。
解决方案
您看到的是 CLR 的版本,即Common Language Runtime。自 4.0 以来的每个 .NET 版本都在 CLR 的 4.0.30319 版本上运行,因此即使对于 .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 上运行等(来源)
推荐阅读
- java - 使用 DataBindingUtil.setContentView(this,R.layout.my_activity_layout)出现错误(java.io.FileNotFoundException)
- java - 尝试在 Adapter AndroidStudio 中对空对象引用调用接口方法
- wordpress - Wordpress 主题编辑器文件权限
- tensorflow - 通过生成器提供输入数据时,在 tensorflow1 中评估自定义层中的张量
- xaml - 如何将 TabbedPage ContentPage 拆分为不同的文件
- c# - 从 A checkboxdatagrid 更新数据库中的值
- r - 删除 r 中低于 1 的行
- html - 如何调整我的盒子模型的边距以适应移动屏幕?
- apache-spark - Spark Streaming,单独处理每个输入文件并输出
- c# - 使用 ODBC 将 DATETIME 值插入 Access 数据库