I'm using Unity3D v4.2.2f1, and the version of MonoDevelop it comes bundled with - v2.8.2.
I see that there are cases where C# code will compile in Unity3D, but not in MonoDevelop. For instance, default values for method arguments are accepted by Unity3D, but result in "Default parameter settings are not permitted (CS0241)" in MonoDevelop.
General advice I've found online is to not attempt to compile from MonoDevelop. Fine - but I'm keen to understand how this mismatch arises. I thought that both Unity3D and MonoDevelop compile C# using Mono? Is it that Unity3D comes with two versions of Mono, one for itself and one for MonoDevelop? If so, why?
Example first line of method that compiles in Unity but not in MonoDevelop (the bit that doesn't compile in MonoDevelop but compiles from Unity3D is the '=false' assignment to setNative):
public static void SetUnityVersion(string path, bool setNative=false) {
...implementation...
}