1. ホーム
  2. .net

[解決済み] Windowsイベントログで参照される「フレームワークのバージョン」とは何ですか?

2022-02-17 13:37:36

質問内容

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-installed-in-computer/

驚いたことに、.NET Detectorは4.0がインストールされていないことを示し、2、3、3.5、4.5.2がインストールされていると表示します。

解決するには?

あなたが見ているのは、CLRのバージョン、つまり 共通言語ランタイム . 4.0以降のすべての.NETバージョンは、バージョン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で実行するなどです( ソース )