I just finished upgrading my blog to BlogEngine version 1.3. While in the process of porting it to the new release, I spent some time experimenting with the extensions and the new BlogEngine 1.3 Extension Manager. I tried to keep track of most of the extensions that get posted on CodePlex and I thought I write a blog post that lists all the extensions that I found and demonstrates them in this post, if applicable. This way BlogEngine fans that don't keep track of all the traffic on CodePlex would get be able to quickly check the availability of a specific add-on for BlogEngine.
The Tools
The whole article was written with the current release of Windows Life Writer and the Code Snippet plugin for Windows Live Writer. The videos that I use for this post where created with Microsoft Movie Maker 2.1.
Extension Manager screen shot
After I deployed all the extensions that I found, I took the following screen shot. On this screen shot you will notice that some extensions are using the old format of adding a tabs to the extensions settings pages like the , where others integrate into the new
Before you start
Known bugs
I was using the 1.3.0.0 version of BlogEngine, which has a bug in the Extension Manager (http://www.codeplex.com/blogengine/WorkItem/View.aspx?WorkItemId=4910). Please get a later release that has a bug fix for this issue. Otherwise you will get an "System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection Parameter name: index" error. I merged the changes from the 1.3.0.12 (9268) change set.
New bugs
I also found two bugs related to saving extension settings to the extensions.xml file. The first issue is that a Save operation seems to succeed although the extensions.xml file is write protected. I also found that the content of extensions.xml is sometimes incomplete. Some elements and closing tags are missing. It seems to be a good practice to have a backup of extensions.xml handy. I looked at the source code and I discovered that there is a "catch all and continue normally" during in the SaveXML() method of the manager.cs file. This explains that you can write to a write protected file and that a bad behaving extension can corrupt the extension.xml file without any warning. The thumbnailer extension has a bug for example that would cause such a corruption. The result is that some one would wonder why extension settings are always reset to the defaults.
Compatibility issues
Currently all the extensions that I tested didn't follow any consistent guidelines of where to put what kind of files. The supporting files are located all over the place. This makes it a little bit harder to maintain the extension plug-ins. I found one compatibility issue between the mp3player extension and the Silverlight media player extension. Both download a JavaScript file called Player.js. This leaves the second control without the correct JavaScript file, if both are used on the same page or post. I renamed the file used by the mp3player extension to mp3player.js and changed the extension source code accordingly to workaround this issue.
Kudos to the extension authors
Almost all extensions that I tested worked well. There was one extension that was not using the ExtensionsSettings framework appropriately and ended up exposing a design issue with the BlogEngine Extension Manager itself.
AkismetExtension
Description: Passes comments to Akismet for validation
Author's Blog: Justin Etheredge
Link to provider of 3rd party service: http://www.akismet.com
Related links: http://www.wordpress.com
Supported Versions: 1.2 and 1.3
Remarks: N/A
Demo:
BBCode
Description: Converts BBCode to XHTML in the comments
Author's Blog: BlogEngine.NET
Link to provider of 3rd party service: N/A
Related links: N/A
Supported Versions: 1.2 and 1.3
Remarks: N/A
Demo:

BreakPost
Description: Breaks a post where [ m o r e ] is found in the body and adds a link to full post
Author's Blog: BlogEngine.NET
Link to provider of 3rd party service: N/A
Related links: N/A
Supported Versions: 1.2 and 1.3
Remarks: N/A
Demo: More...