Using DicomObjects.NET on Mono framework
As of version 6.XX.0.26 of DicomObjects .NET, we have integrated Mono support in DicomObjects. This is a beta version and is in an unstable phase of debugging and testing..!
The main objective of this release is amalgamating DicomObjects .NET release & Mono version into one main Release. There are other good reasons too, and for developers' ease as well.
We are aiming to be able to run on multiple platforms where developers can utilize the same underlying toolkit features on different machines.
And what best than implementing Mono support into our existing toolkit to make it more dynamic and compatible on different platforms.
Mono is an incredible software for developers and software providers who have years of work, tested and perfected on one type of OS and porting it to another platform or another language, would be tedious and impossible to some extent.
Few things to remember and steps to follow when using DicomObjects .NET on Mono:
- Missing WPF libraries, mainly presentationcore.dll and PresentationFramework.dll : [ www.mono-project.com/WPF ] which is a managed wrapper for Media Integration Layer (MIL) and implements core services for WPF [ http://en.wikipedia.org/wiki/Windows_Presentation_Foundation ] This missing DLL can be download from the web or copied from a Windows machine next to the *.exe accessed by Mono.
- Compile errors generating from DicomObjects and anything similar to "Internal compiler error: Method not found: '*.ImageToWorld'..." is all due to missing WPF library that is the above mentioned Presentationcore.dll (Although your code may not be using this library)
- 3D functionalities are missing in this version as DicomObjects is heavily dependent on the Microsoft implementation of .NET framework for 3D data manipulation. It works flawlessly on Microsoft Windows OS's but due to Mono's incomplete porting of WPF support, we've be unable to allow 3D features of DicomObjects in Mono.
- Mono is primarily developed on Linux, and most of its users are Linux users, so it is the platform best supported. Here's a list of supported platforms: [ http://mono-project.com/Supported_Platforms ]
- Mono can run binaries produced by Visual Studio, and has support for few .NET compilers too, but at the moment it doesn't support all other compilers that target the .NET CLR.
- Mono Migration Analyzer (MoMA) is a great tool to identity possible issues when porting your .NET project to Mono. [ http://www.mono-project.com/Moma ]
- Project porting guide: [ www.mono-project.com/Guide%3a_Porting_Winforms_Applications ]
- Detecting the OS platform you are working on: [ www.mono-project.com/FAQ:_Technical ]
- Porting Silverlight to moonlight, Mono equivalent: [ www.mono-project.com/Moonlight
- Debugging tools on Mono: [ http://mono-project.com/Debugger ]
- .NET framework 4.5 is not supported yet. (as of 25/09/2013)
The concept of a '100% .NET application' is logical and legitimate, and is regarded to be so if it only uses the APIs defined under the System namespace and does not use P/Invoke or invoke Win32 API calls, which in turn is dependent on Windows API.
Since DicomObjects was founded mainly on Microsoft Windows platform and is intrinsically dependent on Win32 APIs, for drawing/displaying user control, labels, images, etc. We cannot claim to be platform essentially platform independent, and we are in the process of testing and identifying these discrepancies for us to be platform independent and serve more customers.
- What we recommend our customers is testing out this capability and informing us about any problems that you face and we'll try to solve it ASAP.