When will BlogEngine.NET target .NET 3.5 and use some of it's new libraries?

Mar 29, 2009 at 6:04 PM
Now that .NET 3.5 has been out for a relatively long time, when will we see a new version of BlogEngine.NET that targets some of the new libraries available in .NET 3.5?

For example, the System.ServiceModel.Syndication namespaces that's part of .NET 3.5 allows you to very easily parse and create RSS and Atom feeds. You no longer need to code that yourself.

The Blog Roll functionality. The Blog Roll currently only supports pulling in and displaying the latest feeds from a blog that uses RSS. If the System.ServiceModel.Syndication namespace were implemented in this particular feature you could very easily support displaying the latest entries from blogs that use either RSS or Atom feeds, and fix this issue with placing Atom feeds in the Blog Roll.

This is just one example of an area that could be improved by utilizing some of the new libraries available in .NET 3.5. I'm sure there are plenty of areas that could benefit. Also, by using more stuff that's "baked" into the .NET Framework it would also make BlogEngine.NET even more lightweight that it currently is.

Here's the modified code for the "~/App_Code/Controls/Blogroll.cs" class's ProcessRespose method of BlogEngine.NET v1.4.5 that uses the Syndication namespace in .NET 3.5 to allow for RSS and Atom feed support within the Blog Roll control:

/// <summary>
/// Gets the request and processes the response.
/// </summary>
private static void ProcessRespose(IAsyncResult async)
{
  RssItem item = (RssItem)async.AsyncState;
  try
  {
    using (HttpWebResponse response = (HttpWebResponse)item.Request.EndGetResponse(async))
    {
        System.ServiceModel.Syndication.SyndicationFeed feed = System.ServiceModel.Syndication.SyndicationFeed.Load(XmlReader.Create(response.GetResponseStream()));
        foreach (System.ServiceModel.Syndication.SyndicationItem feedItem in feed.Items)
        {
            string title = (feedItem.Title == null) ? string.Empty : feedItem.Title.Text;
            string link = (feedItem.Links.Count > 0) ? feedItem.Links[0].Uri.ToString() : string.Empty;

            item.ItemTitles.Add(title);
            item.ItemLinks.Add(link);
        }
    }
  }
  catch
  { }
}

I was originally going to post the above code as a Patch, but then a remembered that BlogEngine.NET only targets .NET 2.0 and the Syndication namespace is part of .NET 3.5. That's what got me thinking of how much BlogEngine.NET could be improved if it were to tarket .NET 3.5 so it could utilize some of the new libraries.

I am willing to work on and submit a couple Patches to help with the process of "upgrading" some of the BlogEngine.NET code to using some of the new stuff that's "baked" into .NET 3.5.
Coordinator
Mar 30, 2009 at 12:28 AM
I agree, we can gain from using the new features in .NET 3.5.  You may or may not be aware that the BE core project has already been upgraded to .NET 3.5.  Some of the new .NET 3.5 compiler level features are being used -- but new namespaces such as Linq (and probably the Syndication namespace too) are not yet being used.  The website project is still on .NET 2.0.  Probably sooner than later, the website project too will be upgraded to .NET 3.5.

I think the main reason it hasn't yet been upgraded is because there are some BE users hosting their sites at webhosts that don't yet offer .NET 3.5.  The core project is at .NET 3.5, but because none of the new 3.5 namespaces are being used, the compiled core DLL can still be used in a .NET 2.0 environment.  At this point, I think just automatic properties and lambdas are being used in the core project (compiler level features).

Hopefully as the number of webhosts not offering 3.5 gets fewer and fewer, the website project too can be upgraded to .NET 3.5.

And thanks for sharing the code using the new Syndication namespace.
May 31, 2010 at 10:23 AM

Is this change likely to make it into the BlogEngine.NET 2.0 release? I would really like to put some blogs on my blogroll, that only offer Atom feeds.

I suppose I could go tinkering with the source code myself, but unfortunately my time for hobby projects is currently very limited :)

Jun 3, 2010 at 5:15 PM

I downloaded the most current (v1.6.0.1) and opened it in Visual Studio 2008; I changed the Target Framework to v3.5 and recompiled with no issues. I have not tried this in 2010.

After that, I used BeyondCompare to keep my customized version in sync with the updates on Codeplex.

 

 

Coordinator
Jun 3, 2010 at 5:55 PM

It actually converted to vs 2010/.net 3.5 and use both since version 1.6.1.1

Jun 4, 2010 at 11:34 AM
I would personally have preferred VS2008/3.5.
Jun 4, 2010 at 12:08 PM
As far as I know, project files are backward compatible from 2010 to 2008. However, solution files are not.