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.