There is always SharpDevelop, an Open Source alternative to Visual Studio which - even though less muscular than its multi-hundred-dollar rival - can be used to develop real-world applications, even targeting .NET CF! It supports Boo, C# and VB.NET languages out of the box. The interface looks a lot like VS, so newcomers will not have too much of a hard time.
In order to develop for the Compact Framework, you need a few extras, thankfully available for free from Microsoft. You actually need the .NET CF SDK, but I found it is much more rewarding downloading the Windows Mobile 6 SDK Refresh from their site. It is a somewhat large download (almost 0,5Gb), but it includes all the latest advancements in .NET CF, including the interop with Pocket Outlook (full messaging support) and the camera interop. Not every capability of the devices is mapped into .NET yet - notably most of wireless communications functions - but it is better than nothing.
Does this mean that this is the ultimate solution? Not at all. Using a preliminary release of a feature found in an Open Source app has its disadvantages. For one, you don't get deployment to the device or the emulator upon hitting the Run button; it will open it as a normal .NET app on your desktop! The forms have to be not resized, or they won't fit on the device's screen. You have to make the forms maximized, otherwise they end up as windowed apps, which is very annoying. Sometimes (read: most of the times) the GUI designer will inject lines of code incompatible with .NET CF into the designer source file that you have to edit out yourself. There is no support for building an installer or CAB file; you have to do that yourself.
As a bottom line, while it is possible to develop for .NET CF without Visual Studio, such a setup is only relevant for hobbyists or one-man-companies who want to test their skills on developing .NET CF apps without paying for the full VS in advance. Probably in the future the .NET CD support in SharpDevelop will be better. But even until then I continue to enjoy developing small utilities. The really fun part is coding, after all
.
