Something I ran into w Win10 & only .NET 4 & older games.


Since I've moved to Windows 10, I've had only the .NET 4 'feature' active. I also have the OnlyUseLatestCLR flag set to true. Up until yesterday everything was working fine.
That was then I tried to run some older games, Batman Arkham Asylum & Batman Arkham City.

They would not properly start throwing errors "Could not load file or assembly 'Microsoft.DirectX.Direct3D, version=1.0.2902.0 ....etc."

A quick google search appeared to show that installing .NET 3.5 would do the trick but I really didn't want to do that or turn off the OnlyUseLatestCLR option. Thankfully, as it turns out I didn't need all of .NET 3.5 installed! I just needed to grab a couple of files from it copied over to the games binaries folders (eg same folder as the starting exe is located).

These files were located inside "C:\Windows\Microsoft.NET\DirectX for Managed Code" on a system that did have .NET 3.5 installed. I got mine from a VM in which I activated the 'feature' on a Win10 install. In my case both games simply needed the 1.02902.0 versions of these as shown in the error text earlier in this post:

So for my end at least, I've copied over an archive of the entire "DirectX for Managed Code" folder (<30 MBs uncompressed) in case other apps/games throw similar DirectX errors in the future. Versions it included are 1.0.2902.0, 1.0.2903.0, 1.0.2904.0, 1.0.2905.0, 1.0.2906.0, 1.0.2907.0, 1.0.2908.0, 1.0.2909.0, 1.0.2910.0 and 1.0.2911.0.

Hopefully this post will help make it easier for someone else to fix similar instances with .NET errors about DirectX dlls not being found on a Win 10 machine without actually needing to install .NET 3.5 and bloat the system....