A while ago we hit a problem when System.Xml.dll got re-written to use the Microsoft code. The problem was basically that iOS can't do a CompiledXSLTransofrm. The regular XSLTransform is deprecated in favour of the CompiledTransform. Since iOS can't do the compiled, Xamarin just redirect the call to compiled transform api to use the non-compiled transform. The Xamarin non-compiled System.XML Implementation obeyed disable-output-escaping directives but the Microsoft implementation had a bug that didn't obey these that was sorted in the compiled transform. So when Xamarin switched to use the Microsoft code base and re-direct the compiled transform to the non-compiled transform we get a bug that output escaping is no longer disabled. So the same code on iOS gets a different output if you run it in Windows... not very cross platform The bugs been open 6+ months now and gathering dust https://bugzilla.xamarin.com/show_bug.cgi?id=36556
The workaround for this was to make our machines build using the old system.xml implementations. So each time we upgrade the Xamarin.iOS frameworks we have to faff around symbolically linking /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.iOS/System.Xml.dll etc back to an older version. When i upgrade to Xamarin.iOS 22.214.171.124 this workaround method stopped working an the application started escaping output again. I've just found it does so until i symbolically link stuff in the /Library/Frameworks/Xamarin.iOS.framework/Versions/126.96.36.199/lib/mono/Xamarin.iOS/repl folder as well. I'm a little confused as to why stuff in the repl folder is being used and seems to be what the build output is generated against?