Visual Studio 2012 を搭載した Windows 7 マシンで .NET 4.5 アプリを作成しましたが、Windows 7 にインストールして正常に動作します。
Windows 8 マシンに展開しようとすると、イベント ビューアーにあまり有用な出力がなく、壊滅的なクラッシュが発生します。Dependency walker
のトレースは、1 つまたは一部のコア Windows DLL でメソッドが見つからなかったことを示しています。例えば:
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned 0x00007FFDEA780000.
GetProcAddress(0x00007FFDEA780000 [MSCOREEI.DLL], "RegisterShimImplCallback") called from "MSCOREE.DLL" at address 0x00007FFDEA82F3A9 and returned 0x00007FFDEA783444.
GetProcAddress(0x00007FFDEA780000 [MSCOREEI.DLL], "RegisterShimImplCleanupCallback") called from "MSCOREE.DLL" at address 0x00007FFDEA82F3BC and returned NULL. Error: The specified procedure could not be found (127).
mscoreei.dll を調べると、次のことに気付きました。
Windows 7 マシン
v4.0.30319.18408
613,456 バイト
Windows 8 マシン
v4.0.30319.33440
633,424 バイト
両方のマシン ( ASoft .NET バージョン ディテクタによると) には .NET 4.5 Full があります。
マシンによって .NET のビルドが異なるのはなぜですか? また、Windows 7 マシンのコンパイラが Windows 8 マシンの正しいバージョンをターゲットにしていることを確認するにはどうすればよいですか?