HOWTO: Convert BlogEngine.NET from Web Site to Web Application Project

Much thanks to BenAmada for providing on this thread a step-by-step guide for converting the downloadable BlogEngine.Net Web Site Project to a Web Application Project.

This varies a bit from the MSDN Documentation walkthrough on moving an ASP.Net Web Site Project to a Web Application Project as there are some added steps due to several reasons in the architecture of BlogEngine.Net e.g. the way BlogEngine does themes, its widgets framework and controls dependencies. These are not to criticise the design decisions made, it still is a full featured, well built blogging application which I use and customise daily.

Here are the steps repeated, but I encourage anyone benefitting from this to post your thanks to Ben on this thread as well so that he knows.

1. Create a new WAP.  File -> New -> Project -> Visual C# -> ASP.NET Web Application.  Select the location (I created a new folder for this WAP project), and I used ‘BeWap’ for the Name of the project.

2. Close Solution.

3. In Windows Explorer, copy all the BE files into the WAP folder.  You’ll be overwriting a couple of the files that were included in the new WAP project we created (default.aspx and web.config and maybe a couple of others).

4. Rename the App_Code folder to Old_App_Code.

5. Reopen WAP solution in Visual Studio.

6. Right-click on project name (BeWap) in Solution Explorer, and select ‘Add Reference’.  Go to the Browse tab, and browse to the BIN directory in this project, select ‘BlogEngine.Core.dll’.

7. In Solution Explorer, click the ‘Show All Files’ icon.  All the files/folders that we copied into the WAP folder will show up in Solution Explorer, but they are not yet included in the project, so they are white/ghosted out icons.  Select all these ‘excluded’ folders/files in Solution Explorer, right-click and select ‘Include in Project’.

8. Select the top node in Solution Explorer, ‘BeWap’ (right under Solution ‘BeWap’).  Right-click and select ‘Convert to Web Application’.

9. Save all files (Ctrl-Shift-S).

10. In the web.config file, in the <pages> section, there’s this line:

<add namespace=”Controls” tagPrefix=”blog”/>

Change that to:

<add assembly=”BeWap” namespace=”Controls” tagPrefix=”blog”/>

… where “BeWap” is the name of this WAP project.

11. The site.master files for Indigo, Mobile and Standard all have the same class name of ‘site’.  Change the class name in site.master.cs for the Standard theme to site_standard and changed the Inherits attribute in the <%@ Master %> directive in site.master to site_standard (so they match).  Need to do the same thing for the Indigo and Mobile themes … giving them class names of site_indigo and site_mobile.

12. The class name in edit.ascx, edit.ascx.cs and edit.ascx.designer.cs files in the RecentComments widget is widgets_RecentPosts_edit.  Need to change the class name in these 3 files to widgets_RecentComments_edit.

13. The class name in edit.ascx, edit.ascx.cs and edit.ascx.designer.cs files in the TextBox widget is widgets_LinkList_edit.  Need to change the class name in these 3 files to widgets_TextBox_edit.

14. The class name in widget.ascx, widget.ascx.cs and widget.ascx.designer.cs files in the TextBox widget is widgets_LinkList_widget.  Need to change the class name in these 3 files to widgets_TextBox_widget.

15. Save all files (Ctrl-Shift-S).

16. When trying to build the project, I was getting about 47 errors about unrecognized controls.  The problem was the ‘designer.cs’ files didn’t get created for these ASPX pages back in step 8 when I did the ‘Convert to Web Application’ command.  Even if I try repeating that step again, the designer.cs files still do not get created.  Visual Studio is complaining that various BE controls (blog:SearchBox, blog:PageList, etc) are unknown server tags.  If Visual Studio can build the project once, then these BE controls will start to get recognized.  What I did to get this done was temporarily exclude these pages that reference the BE controls.  The pages referencing these controls can be found in Visual Studio’s error list when you try to build the project.  I excluded the entire Widgets folder, the entire themes folder, the post.aspx file, the error404.aspx file, the default.aspx file and the apiTagMiniView.aspx file.

17. Build the solution.  Should get no errors.

18. Add those temporarily excluded items back into the project from two steps ago.

19. Select the top node in Solution Explorer, ‘BeWap’ (right under Solution ‘BeWap’).  Right-click and select ‘Convert to Web Application’.  The pages we re-included back into the project should now all have designer.cs files.

20. Build the solution.  Should get no errors.

21. Run the solution.  Everything should work.

19 Responses

  1. Hey thanks for publishing this, it saved me a ton of time.

  2. Hi its a good post . But I am having a problem in extensions. Then I tried to change the Old_App_Code to App_Code but its giving me the error The type ‘ExtensionManager’ exists in both ‘c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\nuqta-e-nazar\a98cceb7\b62ec585\assembly\dl3\9b83e8fa\2cc29650_dcc8c901\WAPP_Nuqta-e-Nazar.DLL’ and ‘c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\nuqta-e-nazar\a98cceb7\b62ec585\App_Code.1yitbbas.dll’
    Can somebody help me

  3. In order to make the extensions work again you must change one line in the BlogEngine.Core project Utils.cs file.
    Locate this line:
    //string assemblyName = “__code”;
    and change it to:
    //string assemblyName = “ASSEMBLYNAME”;
    Following the original post example it could be BEWAP.

    Then, in order for the application to show the contents of the extensions you need to make a change in the Editor.aspx.cs file
    Change the line:
    fileName += assemblyName + “\\Extensions\\” + _extensionName + fileExt;

    into:
    fileName += “\\old_App_Code\\Extensions\\” + _extensionName + fileExt;

    where old_app_code is the folder where the classes are located now. According to the example. They can actually be anywhere.

    Hope it helps

  4. Forgot this:
    1. Remove the \\ in front of the old_app_code
    2. Remove the // comments in the first 2 lines.
    That’s it. Sorry about that. I’m sleepy ;)

  5. Hello,
    Your post has been really helpful in the past as it did the job nicely for BlogEngine v1.6 but now that v2.0 is out can you give us a new post that gets around their updates please?

    It seems like they’ve used partial classes with methods in different physical places but are now put under the same namespace with the same class names. Hope you can help us out.

    Many thanks!

  6. In fact, what a fantastic site and informative posts, I’ll add backlink by bookmarking this site. Regards, your reader

  7. I did a lot of research on this, finally I got something of my interest. Some of the points are very well discussed, either way it was a well thoughtout and nice read.

  8. a bit off-topic, do you utilize a free of charge skin inside your site? i liked it.

  9. I would like to thank you for the efforts you have put in writing this blog. I am hoping the same high-grade blog post from you in the future as well.
    http://www.howtogetridofacoldsorex.com

  10. cu acest articol sunt sigur ca ai ajutat multa lume inclusiv pe mine asa ca mersi

  11. This post was very helpful in figuring out how to apply a similar set of steps to BlogEngine.NET 2.5. Ultimately I ran into additional issues that I blogged about here: http://www.richonsoftware.com/post/2012/02/26/Converting-BlogEngineNET-25-to-a-Web-Application.aspx Again thanks for the great post!

  12. Thanks for taking the time to share this, I feel strongly about it and love learning more on this topic.

  13. I think this is one of the most important info for me. And i’m glad reading your article. But wanna remark on some general things, The website style is perfect, the articles is really nice : D. Good job, cheers

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.