流行的 DotNetNuke Web 应用程序转换为 C#






4.16/5 (23投票s)
2007年1月2日
2分钟阅读

192245
为了让更多的人使用 DotNetNuke,我将原始 VB 代码转换为了 C#
引言
DotNetNuke 是一个开源 Web 应用程序框架,非常适合创建、部署和管理交互式 Web、Intranet 和 Extranet 站点。 它有很好的支持; 可以看看 Snow Covered。 不幸的是,VB 和 C# 程序员之间的合作并不理想,他们在这两种语言之间做出了互斥的选择。 这是不幸的,因为 DotNetNuke 是一个非常完善的 ASP.NET 框架,但许多 C# 程序员并不想关注它。
目的
为了让更多的人使用 DotNetNuke,我将原始 VB 代码转换为了 C#。 在 2006 年 10 月 28 日,我发布了第一个成功的 C# 版本。 今天,1 月 2 日,我已经修复了大部分错误,并有一个像样且可用的 DNN C# 版本。
学到的教训
在翻译代码的过程中,我学到了很多经验。 首先,你可能会认为翻译 VB 代码很容易,我也是这么想的。 但在这个项目开始不到十分钟,我就发现事实并非如此。 首先,我尝试使用 VB Conversions 翻译代码,并编译了结果源代码,产生了 3,000 多个错误。 这显然行不通。 其次,我尝试使用 Lutz Roeder 的 Reflector 来查看编译后的二进制文件中的代码。 虽然这产生了稍微好一点的结果,但它不是一个可行的解决方案。 如果我想及时完成这项工作并使其变得有用,我需要找到一条替代路线。 最后,我想出了一个解决方案,它是前两种方法的结合,以及我专门为这个项目制作的一些专用工具来完成它。
结果
由于转换代码的结果,新的 C# 版本比它的 VB 版本运行得快得多。 我还通过编译和生成一个为网站中所有页面 + 类命名的程序集来提高它的速度。 这并不容易,因为 ASP.NET 不允许预编译网站中的 App_GlobalResources
,但我通过将 GlobalResources
和 SharedResources
嵌入到 DotNetNuke.Library 库中,并使用 ResourceLoader
从程序集中的嵌入式资源中提取字符串来绕过这个错误。 然后,将剩余的配置文件放入配置目录中。
结论
我转换这个项目是为了让我自己和其他 C# 程序员更容易阅读,并让更多的用户可以使用 DotNetNuke。
Google Code
该项目托管在 Google Code 上。 请访问项目的 Google Code 网站,以获取最新的错误修复和版本。
重要链接
新闻
2007 年 1 月 5 日:新的错误修复,模块在安装期间全部加载,用户注册工作正常,并且大部分明显的错误都已修复。