65.9K
CodeProject is changing. Read more.
Home

A conversion of the popular DotNetNuke web application to C#

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.16/5 (23 votes)

Jan 2, 2007

2 min read

viewsIcon

189382

In an attempt to open DotNetNuke to a wider audience, I have converted the original VB code into C#

Introduction

DotNetNuke is an open source web application framework ideal for creating, deploying and managing interactive web, intranet and extranet sites. It is very well supported; just take a look at Snow Covered. Unfortunately, VB and C# programmers don't cooperate as best they should, and take a mutually exclusive choice between the languages. This is unfortunate because DotNetNuke is a very well developed framework for ASP.NET that a lot of C# programmers do not want to look at.

Purpose

In an attempt to open DotNetNuke to a wider audience, I have converted the original VB code into C#. On Oct. 28, 2006 I released the first successful build in C#. Today, Jan 2, I have fixed most of the bugs and have a decent workable copy of DNN in C#.

Lessons Learned

Throughout the course of translating the code I learned many lessons. At first guess, you might think that translating the VB code would be easy, as did I. It wasn't more than ten minutes into this project that I learned otherwise. First, I attempted to translate the code using VB Conversions and compiled the resultant source code with over 3,000 errors. This obviously wasn't going to work out. Second, I tried to use Lutz Roeder's Reflector to look at the code from the compiled binary. Although this resulted in slightly better results, it wasn't a viable solution. If I was ever to complete this in time to be deemed useful I needed an alternative route. Finally I came up with a solution that was a combination of the first two methods, and some specialized tools I made specifically for this project to get it done.

Results

As a result of converting the code, the new C# version runs incredibly much faster than its VB cousin. I was also able to increase its speed by compiling and generating a single named assembly for all pages + classes in the website. This wasn't that easy due to ASP.NET not allowing App_GlobalResources in pre-compiled websites, but I was able to get around this bug by embedding the GlobalResources and SharedResources into the DotNetNuke.Library library, and using a ResourceLoader to extract the strings from the embedded resources in the assembly. The remaining config files were then placed into the config directory.

Conclusion

I converted this project to make it more readable by myself and other C# programmers and open the DotNetNuke to a larger audience.

Google Code

The project is hosted on Google Code. Please visit Project's Google Code website for the latest bug fixes and releases.

Important Links

  • This is the project home at Google code.
  • This is the SVN repository.

News

Jan. 5, 2007: New bug fixes, modules all load during install, user registration works, and most obvious bugs have been fixed.