A conversion of the popular DotNetNuke web application to C#






4.16/5 (23 votes)
Jan 2, 2007
2 min read

191299
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 atSnow 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 allowingApp_GlobalResources
in pre-compiled websites, but I was able to get around this bug by embedding theGlobalResources
andSharedResources
into the DotNetNuke.Library library, and using aResourceLoader
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 visitProject's Google Code website for the latest bug fixes and releases.
Important Links
News
Jan. 5, 2007: New bug fixes, modules all load during install, user registration works, and most obvious bugs have been fixed.