I have resolved the problem by myself. My original assumption is correct C# sample code has same problem as C++ program does. They are all missing ml64i4.dll file. For some reason, the old version Wolfram Mathematica will use default path to this file which is also called strong named. But apparently new version has changed. If you are trying to maintain an ancient code like my doing. It is worthwhile to try to copy ml64i4.dll and ml32i4.dll into the Debug/Release folder of the project.