Why are there platform specific versions?

Jun 24, 2015 at 11:04 AM
As far as I can see it, there is no platform specific code in Atapi.dll. At least nothing that would change at build time. Things like IntPtr change depending on the platform of the runtime/process/calling application, but the Atapi library itself could stay platform neutral (build for AnyCPU).

I did some quick tests with Atapi.dll build for AnyCPU and with the calling application running both as x86 and x64 and couldn't find any runtime differences. So, why are there platform specific builds?
Jun 24, 2015 at 2:22 PM
At one time, with AnyCPU, Windows would default to a 32-bit compilation model and you would get a launch failure trying to include the assembly in a 64-bit DLL. I've not tried it in years however so it's possible that you can do a single assembly these days. Keep in mind that ATAPI was originally written in 2003 :)
Jun 24, 2015 at 3:33 PM
Ok, maybe in the pre .NET 2.0 days that was the case. But for ATAPI the platform specific builds were added in commit 83920 on Jun 2, 2013. What was the reason for that?
Jun 24, 2015 at 3:45 PM
That's when it was all pushed into codeplex (in pieces).. not when it was actually created or done.. it existed for years on a website. I can't recall the last time we tried it as an AnyCPU module, but a lot of people had trouble with it.

Feel free to build your own copy from the source and make it AnyCpu - but I'd make sure to test everything you plan to use. I'm not planning on doing any additional builds or changes at this point as I'm not involved in TAPI anymore so the code is frozen at this point.