Download: .NET Devs' Latest Free, Open IDE

Microsoft .NET devs can now download a free and Open Source IDE for code creation, testing, auto-insertion, XML previews, and debugging. It even come with an implementation of Windows Forms. Get the latest download and details on how the #develop IDE project may change the nature of .NET development.

Tags: IDE, Feature, Open Source, Windows, Integration, Design, Support,

IDN Executive Overview
Among topics covered in this article are:

  • A look at a new Open Source IDE for Microsoft C#, which includes code creation, testing, auto-insertion, XML previews, and debugging. It even come with an implementation of Windows Forms;
  • A detailed IDE "feature review" of top 10 major highlights; and
  • An IDN interview with #develop IDE co-creator Christophe Wille

  • ======================================

    by Vance McCarthy
    Developers at #develop, have added project-level import for VS.NET and other features to their 1.0 version of their #develop (SharpDevelop) Open Source IDE for C#, VB.NET, Managed C++ and ILAsm projects built to run on Microsoft's .NET platform.

    The focus of the Open Source #develop IDE project is "on making #develop portable to other CLRs and platforms" to allow #develop to run with native look and feel on Microsoft .NET / Windows, as well as Mono on Windows and Mono on Linux.

    Aside from standard code creation and debugging facilities, #develop also brings a full environment to the project, including Windows Forms, testing, auto-insertion capabilities for code and tweaks and even an XML preview feature.

    Inside #develop IDE Feature List
    Written entirely in standards-based C#, the #develop version, released September 10, sets a "solid foundation for the growth" of Open Source tools for .NET development projects, #develop managers said. Among the key features in the #develop IDE download are:

    Code Completion
    No IDE would be complete without this feature, which is supported for both C# and VB.NET. Write a statement followed by the . (dot) and code completion will kick in. Too lazy to type that long variable or class name? Press Ctrl+Space and #develop will provide you with potential candidates for what you began to type.

    Forms Designer
    A Windows Forms Designer ships inside #develop for both C# and VB.NET. It comes with full design time support, roundtripping and generally saves you a lot of time when developing Windows-based client software. Note: there is no designer for ASP.NET Web forms.

    Code AutoInsert
    Tired of implementing interface definitions, overrideables, writing get and set accessors for various member variables? Alt+Ins is your ticket to time saving. Just select the action you want to perform and the tedious typing work is taken care of for you.

    Code Converter
    You are a VB.NET developer. You find a sample that exactly solves your problem. It is C#. Sound familiar? No problem with #develop - it comes with conversion from C# to VB.NET and vice versa. And it does its magic on the project level too, so converting entire projects is a piece of cake. Combined with the next feature, this really becomes a time saver.

    VS.NET Solution Import / Export
    You can import Visual Studio .NET solutions (.sln as well as the project files only, which is especially helpful for ASP.NET projects) into #develop. Export is also supported, but please note that because #develop is capable of deeper project nesting than VS.NET, this hierarchy will be flattened if necessary.

    Folding Considered a standard feature in modern development editors, folding code
    regions is supported by #develop based on the parsing information of your code files. Folding state is remembered for you across development sessions.

    Integrated NUnit Unit Testing
    View / Tools / Unit Tests is an integrated NUnit front end for executing unit tests in your assembly. No need to leave the development environment, do test-first-design inside your IDE.

    Assembly Analyzer
    When you have built your project, go to View / Assembly Analyzer. It will point out errors and make suggestions to improve your code's compliance to .NET coding standards. This is comparable to the separately available FxCop tool from Microsoft, however integrated into your development experience.

    XML Documentation Preview
    You have written an XML documentation comment - want to know how it will look like in the help file? Simply place the cursor in the comment and press Ctrl+Q. And when you are satisfied, use Project / Generate Documentation to let NDoc create the help file for you.

    #develop 1.0 also supports syntax highlighting, intelligent braces, bookmarks, code templates, regular expressions toolkit, New Class wizard, HTML export, Class browser, NDoc integration, and NProf integration.

    IDN Interview with
    Christoph Wille,
    co-creator #develop IDE project

    IDN: How would you describe #develop's basic mission?

    Wille: Our basic mission -- if you can actually call it a mission -- is to provide an IDE that can be adapted to specific needs. We started out "scratching our own itch" when we found that there was no IDE doing what we wanted. Over time, our add-in-based design has proven very flexible. Everything in #develop is an add-in: menus, compiler
    back-ends, tools; really everything.

    IDN: To help introduce developers to #develop, what functions/principles are the easiest to learn? Can you put any of these features into context of other tools/scripts that developers might now be using, as a comparison?

    Wille: #develop tries to be as intuitive as possible to use, even if we can't make transition completely painless. Obviously, developers coming from the Visual Studio camp will be used to different ways of working than those coming from the Borland camp. We can't provide a "no surprises" environment for everybody. For starting, the wizards will be quite helpful, as they make generation of Typed Class Collections and other tedious tasks much easier. The code auto-insertion feature (automatic generation of events, properties and constructors) is also extremely helpful.

    If a developer wants to adapt #develop to his own needs, there are a
    number of avenues to follow without much effort:
    1. Syntax highlighting is defined in XML files (*.xshd) -- If you want highlighting for a given language, write a file based on an existing highlighting scheme and add it to the modes directory, and there you
      are; and
    2. Adding support for a third-party compiler is easy, be that a .NET compiler or not. When you look at the source code distribution, you'll find a rudimentary binding for the GCC C compiler in the samples folder. With a day of work or less, you can write your own compiler back-end looking at this or any of the other back ends, like Java.
    IDN: What developer problems are you addressing, and how do you see #develop fitting into the overall vision you have for enterprise development that mixes Open Source and .NET technologies?

    Wille: You might say that we offer a "Swiss Army Chainsaw" for developers. As for Open Source and .NET, we think this is a great combination. Development in Open Source is fast in general and using .NET and C#, with their short turnaround times for coding in particular, speeds up development even more. And we also found that .NET lends itself very well to modern software development practice: interfaces, refactoring, etc.

    IDN: What improvements (and complete capabilities) are now in #develop that you can now christen it as your "1.0" release?

    Wille: For #develop 1.0, we plan to enhance the text editor (which can be used as a standalone as well -- due to our add-in-based design), include project management features and most important of all, we'll switch from System.Windows.Forms to a different UI library of our own. This step in particular will make #develop platform-indifferent, as it will then be able to run on any platform providing a .NET-compatible environment such as Mono or dotGNU.

    IDN: You also seem to always be improving revs with changes and bug fixes, any late of note?

    Wille Our code updates and other enhancements include:
  • UtilityLibrary toolbars were exchanged for CommandBars Library toolbars
  • Improvements to the integrated COCO/R C# parser
  • Improvements to the lexer layer
  • A better Type resolver
  • Replacement of the C# parser with #refactory
  • Forms Designer bug fixes
  • Nunit 2.1 integration instead of #unit integration
  • Nprof profiler integration
  • MDI layout replaced with SDI layout
  • Option panel and project property boxes share look and feel
  • IViewContent improved to allow multiple views of one document
  • Folding temporarily disabled
  • Directory layout improvements

    Using #WT (Sharp Widget Toolkit) as a GUI library will mean that #develop will have native look and feel on any platform. #WT is derived from IBM's SWT GUI library, which is quite a success in the Java world.

    IDN: In your formal announcement on future work, you state: "Our current focus is on making #develop portable to other CLRs and platforms" to allow #develop to run with native look and feel on Microsoft .NET / Windows, as well as Mono on Windows and Mono on Linux." Can you share one of two user cases that would demonstrate the value of this?

    Wille: Just imagine -- develop your software once; run it anywhere. This is one of the long-term dreams of the software industry. Java delivers on this, but we feel that .NET and its compatible Open Source cousins will turn out to be at least equal, if not better, in performance than Java. Since Java was architected, progress has been made in software design. We particularly see that with migration from Windows to Linux happening, a way of moving existing code is important.

    IDN: Given all these features in #develop, what's your best advice for a "starter" #develop project?

    Wille: There isn't such a thing as an ideal starter project. You'll find that developing C# programs of any nature is easy due to code completion, and there are a number of templates for different types of project available. Web services still aren't supported by specific IDE features, but this will come. You might even consider developing some DirectX 9 project, as the SDK documentation for that integrates into our online help. [Microsoft DirectX 9.0a is an End-User Runtime that will update your current version of DirectX -- the core Windows technology that drives high-speed multimedia and games on the PC.]

    IDN: Many of our readers love code samples (as you might expect). Can you provide any code samples to help demonstrate how simple #develop is to learn/leverage for web services projects?

    Wille: As for code samples, the source code distribution provides a number of varying nature As we don' t have formal support for web services right now, we don' t provide formal samples for this yet. However, as our user community is pretty involved in making #develop into a better product, you can look at our forums to see what can be done.

    A project template for .aspx and much more can be found at the #develop community forum, for example. This site also includes bug reports, help files and FAQs.