F# adds a Program class declaration to the code in a F# module. In .NET, the DataContractSerializer includes the module name, which is compiled as a static class, in the serialized type name. In Mono 3.2.7, I found that the DataContractSerializer ignored this parent class. Extracting the code to another file and keeping the nested TestType works the same in both Mono and .NET.
This test built successfully on .NET but failed in the Travis CI build. F# injects a Program module into the Program.fs file:
Moving these to a nested type in another file worked also failed. .NET produced Tests.TestType and Mono continued to produce only TestType:
I moved the nested type directly under the namespace in order to make these consistent: