 |
 |
Tuesday, March 04, 2008 |
In addition to our presence on SourceForge (project page) we now also set up shop at CodePlex (project page). The motivation for this step is to increase awareness about SharpDevelop, and how parts of SharpDevelop can be reused in other applications / scenarios.
 |
Wednesday, January 23, 2008 |
A change that happened rather early in the development process of SharpDevelop 3.0 (revision 2658, 8/13/2007) was that we replaced NDoc (a stalled open source project) with Sandcastle Help File Builder (SHFB). SHFB looks and feels similar to NDoc, however, it builds on top of Sandcastle, a documentation generation tool by Microsoft.
Our build server (revision 2913 and higher) contains SHFB 1.6.0.4, which itself builds on top of the January 2008 release of Sandcastle (both are at the moment the latest releases of their respective projects). SharpDevelop 3.0 setup ships with SHFB, however, Sandcastle itself does not and must be installed separately! (this might change in the future once the final license of Sandcastle is known)
Because of the regular releases of Sandcastle and SHFB, the distribution of SharpDevelop 3.0 might ship with older versions of SHFB than currently available for download. Thanks to Eric Woodruff, the maintainer of SHFB, this is not a big deal - he is offering a download specific for SharpDevelop:

All you have to do is first delete the contents of the following installation directory (including subdirectories):

Then simply unzip the SHFB distribution archive into this folder and presto - you are now using the latest version of SHFB from inside SharpDevelop!
 |
Tuesday, January 15, 2008 |
This question came up for example in the thread SharpDev 2.2.x on BuilderServer (this thread was started because we ceased to automatically build v2.2 on 1/11/2008).
The answer is Yes. Development of SharpDevelop 2.2 stopped with revision 2675 (8/28/2007), which is three revisions higher than the officially shipping version of SharpDevelop 2.2 (Download, 8/8/2007). The three non-shipping commits are:
- 2673: Improved CSharpCodeCompletion sample: add tool tip support, show only one entry for overloaded methods
- 2674: Fixed some off-by-one bugs in the CSharpCodeCompletion example (caused by the different line counting in the parser and the text editor).
- 2675: CSharpCodeCompletionSample: show xml documentation
All three were (of course) merged into Montferrer (SharpDevelop 3.0), this merge happened in revision 2679. However, those commits did not merit a release of a new setup because those were all changes to a sample shipping only in the source download.
Since releasing v2.2.1 all work stopped on the 2.x series of SharpDevelop. Our efforts went (and still go) into SharpDevelop 3.
 |
Friday, January 11, 2008 |
In continuing to list changes to SharpDevelop 3, we are going to talk about the code coverage addin in SharpDevelop 3 "Montferrer" in this blog post.
Previously, the addin used NCover for calculating code coverage (this is a metric you gain by writing unit tests). However, recently NCover was turned into a commercial product. Because we only include / support tools that are free to use for anyone (commercial or open source / hobby development), we switched to a different tool - PartCover.
This change happened in rev 2744 on 19th of November last year. The addin has retained its original functionality, however, for end users there is an important change: you no longer need to download and install a separate package (as it was the case with NCover), PartCover is part of the SharpDevelop setup. You are good to go right after installation!
 |
Thursday, January 10, 2008 |
An issue that initially came up in 2006 (Unable to compile #develop: access denied) "resurfaced" on our contributors mailing list because one of our developers ran into this very problem that McAfee blocks access to our Main\StartUp folder:

The problem and a workaround is described in McAfee VirusScan and the Startup folder. However, this developer doesn't have the administrative rights to change this setting of McAfee, so he asked whether we are going to rename the folder.
My take on this issue is that this is a bug in McAfee's software, because willy-nilly disabling anything that resides in a random folder called StartUp isn't a security feature.
 |
Wednesday, January 02, 2008 |
Over the past months we made a couple of feature changes in SharpDevelop 3 (currently alpha status). One major change is that we moved NAnt and Mono support from the binary distribution (aka "setup") to the source code distribution. You can find the addins ready to build in the \samples directory:

What was the reasoning behind this decision? For NAnt, we had taken this decision a long time ago because SharpDevelop itself no longer uses NAnt as the primary build solution, and as such, the addin wasn't actively enhanced and tested. But it still is a great tool as well as a good sample for building addins with SharpDevelop.
The decision to "relegate" Mono from production to sample status has been based on multiple factors. For one, we only support basic compilation for Mono, no debugger nor any kind of visual designers (like GTK#). We got lots of support questions regarding these, and the honest answer had to be "we won't support that, sorry". Then in December Miguel announced that MonoDevelop will come to Windows (MonoDevelop is a fork of SharpDevelop), which meant that an IDE would come to Windows that fully supports all the things in Mono we don't have.
That's why we decided to make Mono an addin for people who know how to deal with source code, all the features are still there. And now that it is separate, it also makes a great sample addin because of the deepness of integration with low-level features of SharpDevelop.
To sum it up - we didn't remove anything, we just trimmed the setup to include features that are targeted at the Microsoft .NET platform.
 |
Wednesday, October 24, 2007 |
Daniel is currently working on areas such as project subsystem or code completion (aside from fixing bugs). Therefore, work on the WPF designer is stalled. But Daniel put together a list of tasks (hard, medium & easy) that you could be helping us with. So if you are interested in helping, and want to be part of writing an open source WPF designer, please do get in touch with me at christophw at icsharcode.net!
WPF Designer mini tasks
Here are some jobs to do on the WPF Designer broken into small parts.
Apart from this list, there are also big jobs to do: Data Binding support, support using Styles, support defining resources.
Components to be used by multiple designer parts
Create “Choose Class” dialog
The data binding UI will need a dialog that allows choosing a class from the referenced assemblies. This will be implemented in WpfDesigner.AddIn and made available to WpfDesign.Designer through a service. The referenced assemblies should be inspected using ICSharpCode.SharpDevelop.Dom
This will be used by the “Content” property editor and by the data binding UI.
Support ‘Virtual Design Root Element’
This means that instead of displaying the designed component, the designer is able to display another component as if it was the root component. The designer should provide a “Back” button on the design surface to allow the user to go back to the real root component.
This feature is required for designing elements that cannot be designed directly on the main design surface, e.g. Tooltips
Write menu designer
Priority: High
The menu designer might be a dialog box that allows editing the menu in a tree view; or it might be an in-place menu designer like the Windows.Forms designer.
Property editing support
Here I’m listing properties that could need improved editing support.
When implementing property editors, take care that the editor should also work when multiple components with different property values are selected, so you always need a way to represent the ‘ambiguous’ value.
Properties of type Brush (e.g. Control.Background / Control.BorderBrush)
Priority: High
Change ICSharpCode.WpfDesign.Designer.Controls.TypeEditors.BrushEditor to include a little drop down button, the drop down should allow to choose the brush type (SolidColorBrush, etc., we don't need to support all of them at the beginning) and allow the user to edit the brush according to the chosen type.
Properties of type BitmapEffect / BitmapEffectInput (e.g. UIElement.BitmapEffect / UIElement.BitmapEffectInput)
Priority: Low
Implement a TypeEditor (similar to BrushEditor) for the types BitmapEffect and BitmapEffectInput. Could be as simple as a combo box with the most commonly used effects.
Properties of type ICommand (e.g. ButtonBase.Command)
Priority: Medium
There should be a way to choose the command to use from some kind of list.
ContentControl.Content
Priority: High
ICSharpCode.WpfDesign.Designer.Controls.TypeEditors.ContentEditor The “C” button should be made a drop down button (like the one used for the Brush editor), it should present “null”, “string”, and menu items for creating commonly used child configurations (e.g. StackPanel with Image and Text when the parent is a button), and “choose class” to create arbitrary objects. This depends on “Create Choose Class Dialog”.
Properties of type ContextMenu (e.g. FrameworkElement.ContextMenu)
Priority: Medium
Provide a way to create and edit a context menu inside the designer.
Properties of type InputScope
Priority: Low
Research what an InputScope is and if/how we should allow the user to edit it.
Properties of type Transform
Priority: Low
Similar to the BrushEditor, provide a drop down to choose from the different available transforms and allow editing the transform properties.
FrameworkElement.ToolTip
Priority: Medium (setting string tool tips), Low (designing complex tool tips)
Should be editable similar to ContentControl.Content, but has to allow the user to design complex tooltips. Depends on “Support ‘Virtual Design Root Element’”
Properties of type FontStretch / FontStyle / FontWeight
Priority: Low
Provide a drop down with the available settings
Properties of type FontFamily
Priority: Low
Use a dialog to allow the user to choose the font to use.
Properties of type Nullable<bool> (e.g. ToggleButton.IsChecked)
Priority: Low
ItemsControl.ItemsSource
Priority: Low
There are two main usage scenarios: this property is specified using data binding (this doesn’t need to be handled by the type editor), or there are some hard coded values.
Write a type editor to support entering string values.
Label.Target
Priority: Low
Label.Target is set to the control described by the label (the control getting focus when Alt+Access Key is pressed). This is done using data binding, but choosing the target from the data binding dialog is too tedious – drag’n’drop of a crosshair on the target control would be much easier. Depends on data binding support.
Properties of type ImageSource (e.g. Image.Source)
Priority: High
Allow choosing a “Resource” element already part of the project, or choose a file and it will get added to the project. This TypeEditor would be implemented in WpfDesign.AddIn and not WpfDesign.Designer because it needs access to the project in SharpDevelop
Properties of type ViewBase (e.g. ListView.View)
Priority: Low
Provide a drop down with the most commonly used views.
 |
Sunday, August 26, 2007 |
Today I retired the initial Wiki (which only remained online for the book errata; we are now actually at Wiki #3), as well as the initial forum. Both resources [/heyhey/wiki/ and /opensource/sd/forums/] were available read-only anyways. The old URLs now redirect to our new and active installations.
The main reason for the complete removal is security. Both were old, unmaintained ASP solutions.
 |
Thursday, August 09, 2007 |
A small but highly visible bug went unnoticed for the official 2.2.1 release: When creating a new project, ${USER} ${DATE} in the standard header etc. was not replaced with values. Thus we decided to release an 2.2.1a version that contains a fix for this templates-related issue.
 |
Wednesday, August 08, 2007 |
Today, we released SharpDevelop 2.2.1. This is a bug fix release with two updated external software packages: NUnit 2.4.2 and SharpDevelop Reports 2.2.0.235. It is recommend that you upgrade to this point release.
 |
Wednesday, June 13, 2007 |
 |
Thursday, May 24, 2007 |
Another new addition to our Web offerings: the online code formatter. It is based on the syntax highlighter of SharpDevelop's text editor, and thus supports quite a few formats out of the box: SP/XHTML, BAT, Boo, Coco, C++.NET, C#, HTML, Java, JavaScript, Patch, PHP, TeX, VBNET, XML. In addition the Web form, I also added a Web service that can be used in your application to perform code conversion, a sample is available.
Noteworthy: the Web offerings are built upon the sample you can find in the source download (revisions 2522 upwards) - \Samples\HtmlSyntaxColorizer.
Our online code converter has been extended with the SnippetParser that Daniel wrote about on this blog. Now you can convert entire classes, or just code snippets. Please note that snippet conversion is only available for C# and VB.NET.
 |
Monday, April 02, 2007 |
Last weekend, we held a #develop developer days (#d^3) meeting in Karlsruhe. There were five us that managed to free up the Easter schedule: Daniel (lead developer SharpDevelop), Dickon (data tools SharpDevelop), Peter (lead developer SharpDevelop Reports), Alex (PM SharpDevelop Reports) and myself (PM SharpDevelop). As you can guess, our focus was on data(base) support inside SharpDevelop.
Dickon gave us a tour of the database tools as they exist today - to get everyone on the same page as to where we stand (code-wise) and where Dickon wants to take the feature:

That of course ended in a whiteboarding session by Dickon (left), Daniel (right) and me:

The lowdown: a name change, restructuring and the decision to drop the current implementation of the db tools from the 2.x branch. After all, we have a couple of consumers (like SharpDevelop Reports) for the data tools in 3.0.
Daniel presented two things - first, the state of affairs with regards to our XAML designer:

This presentation then commenced with LINQ features already present in SharpDevelop 3.0 "Montferrer" today:

Peter & Daniel spent a considerable amount of time ripping out the load / save engine from SharpDevelop Reports, replacing it with a much cleaner and faster one - that, however, means that existing files (v2.1) are no longer compatible with the next version (v2.2 due in June).
Otherwise of note is that all five of us were using Windows Vista on their laptops (I suppose MS would rejoice if the majority of the user base would be that keen to work on Vista!), and that as always we visited a couple of nice restaurants (Brauhaus Moninger and Kanya's [sites in German])
 |
Wednesday, March 07, 2007 |
After 13 months in development, we are proud to release v2.1 (detailed announcement). This release contains a lot of features we consider essential for writing quality code, such as code analysis. A list of what's new was compiled by Matt, who is also maintaining our feature tour.
Stepping out of SharpDevelop's shadow is SharpDevelop Reports, which is the reporting solution formerly known as SharpReport. A lot of feature work lies ahead (roadmap details), so look forward to a full-featured open source .NET reporting solution!

 |
Friday, February 09, 2007 |
 |
Saturday, December 23, 2006 |
More information here. The release was originally scheduled for a week earlier, however, bug fixing took us a little longer so we decided to slip.
 |
Friday, December 01, 2006 |
Our build automation system has changed: up until yesterday, we were using CruiseControl.NET to kick off an NAnt script to run our daily build. Now we are using MSBuild end-to-end in our build system, with a much cleaner architecture than before:
- CruiseControl.NET kicks off the build by checking out the latest changes. The build is triggered either based on time (for the daily builds) or on check in (continuous integration).
- After check out, CruiseControl.NET hands over to KickStart.proj, which we wrote and placed in the root of our CC.NET installation. This MSBuild script sets a couple of properties, and then delegates further work to
- Automated.proj. This MSBuild script is part of the checked out project that is to be built. It does all the heavy lifting, like build, unit tests or setup creation.
The obvious advantage of this setup: the build server doesn't know a thing about what the project needs (tools, libraries, you name it) to be built properly. Thus we are now doing our daily SharpDevelop builds, our CI SharpDevelop builds as well as SharpReport daily builds using one standardised setup. It took us a while to get into gear (old habits die hard, and why change a running system), but it is now fully operational.
Bootnote You can find all of our scripts in the repository. However, you need to check out trunk/SharpDevelopBuildServer instead of trunk/SharpDevelop.
 |
Wednesday, November 22, 2006 |
Yesterday, we set up an anonymous Subversion mirror for the SharpDevelop repository. Instructions on how to use it can be found here:
http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.UsingTheRepository
It replicates from the development repository every six hours starting at 3:15AM CET. Please note that we might remove anonymous access to the development repository in the future, so please switch over to the new mirror.
 |
Tuesday, November 21, 2006 |
The code converter has a new home: http://codeconverter.sharpdevelop.net/ - please update your bookmarks, as well as applications that are using our conversion service. In addition to the move, we upgraded from revision 1591 to 2063.
 |
Sunday, November 19, 2006 |
Daniel mentioned in his blog post Open Source Code Statistics that earlier work on SharpDevelop 2.0 (code name Corsavy) was done in a non-public repository and thus not included in the statistics. The reason is that this initial Corsavy repository gave way to the current SharpDevelop repository, where all the work was imported in one fell swoop. Therefore no public knowledge exists on what happened in the early days of developing version 2.0. Well, this post intends to correct this situation.
First and foremost: the actual repository does not exist any more. All that remains are the commit messages collected in an mbox file:
CorsavyCommit.zip (154.11 KB)
To view this mbox file, please use the Windows MBox Viewer. All you need to do is File / Open and browse to the folder where you extracted CorsavyCommit.mbx to. Then you can browse the history of the internal repository for Corsavy:

A couple of things to note on the history:
- The repository was operational from 12/31/2004 till 8/16/2005, when it was transitioned to the current repository.
- It contains roughly 400 commits
- Yes, the revision numbers do start at 1 again in the middle of the commit messages. Reason is that our initial Subversion server at this time had issues. So we had to start over with a new repository.
I hope that you will find this excursion on history lane interesting, especially on how long we actually worked on version 2.0 before going public.
 |
Tuesday, November 07, 2006 |
A rather informal launch as I am here in Barcelona at TechEd Developers - John (SharpZipLib maintainer) has released v0.85 for both .NET 1.1 and .NET 2.0:
The SharpZipLib download page doesn't yet reflect the new version, so this is the place to get the version first!
 |
Saturday, November 04, 2006 |
Because we shipped a non-working version of SharpReport with build 2.1.0.2006, we have released build 2.1.0.2017 (Beta 2b) for those of you that test SharpReport inside SharpDevelop. The upshot: you now have the latest and greatest bits of SharpReport in SharpDevelop2 2.1 Beta 2. Download
 |
Thursday, November 02, 2006 |
Please see the Beta 2 Announcement for details of what's new, changed, enhanced, fixed or even removed from the bits.
In the blog entry SharpDevelop Presentation we announced our plans to reverse-integrate SharpReport in the future. This has happened as of today's Beta 2 launch of SharpDevelop.
The SharpReport Repository
SharpReport has a repository of its own now: svn://sharpdevelop.net/sharpreport/trunk
The checkout procedures are explained in this Wiki entry.
Building SharpReport
After checkout, run debugbuild.bat:

This will populate the bin folder with the SharpReport standalone designer plus the SharpReport addin:

Simply execute SharpDevelop.SharpReport.exe and you will be presented with the familiar SharpDevelop IDE, however, slimmed down to support SharpReport-needed functionality only:

(Please note that as of this writing, the SharpReport samples haven't yet been checked in to the new repository)
Where Do I Get Support?
SharpReport now has a dedicated support forum, and Peter will be blogging about SharpReport features here.
Where Can I Download Binaries?
At this point, there are no precompiled packages available other than SharpReport shipping in Beta 2 of SharpDevelop 2.1. Note, however, that Beta 2 is shipping an older version of SharpReport than is available via the repository because of reverse integration.
 |
Monday, October 30, 2006 |
The PDF contains a presentation on SharpDevelop touching the following points:
- SharpDevelop - The IDE
- SharpDevelop - The Core
- SharpDevelop - The Architecture
- SharpDevelop - The Components
- SharpDevelop - The Team
- SharpDevelop - The Future
The section "components" talks specifically about features of SharpDevelop that can be used in your applications.
sd2from10000ft.pdf (462.7 KB)
Daniel prepared an NRefactory Internals presentation for this year's #d^3 event in Bad Ischl. The PDF version is now available for download:
nrefactoryinternals.pdf (1.01 MB)
 |
Tuesday, September 19, 2006 |
Read the detailed announcement for version 2.1's Beta 1 release here.
 |
Monday, September 18, 2006 |
A feature that was implemented rather early in the codebase of SharpDevelop2 2.1 is support for code analysis via FxCop. This code analysis tool comes in really handy to for example spot security problems in your code (discussed in the article A Look Inside the Security Development Lifecycle at Microsoft), or more general, detect coding errors (please see the article Bad Code? FxCop to the Rescue, or FxCop, Your .NET Cop).
How does it look like? It integrates with the build system and errors / warnings are displayed alongside compiler warnings:

FxCop is not enabled by default, you have to do that in the project options:

It is considered good coding practice to enable code analysis.
 |
Sunday, September 17, 2006 |
|