Customizing the latest Module Dev Project Templates

This blog post is no longer being maintained, visit the Tutorial for customizing the module development templates.

Update for v2.2: the default namespace, email address, and website urls are different in the templates. Instructions for changing them are still the same, just be aware that some of the strings have changed.

With the 2.0 release of my module development project templates last week I’ve had a few inquiries into how to customize the templates. You can download the templates from

Why Modify the Templates?

First, why might you want to modify the custom templates? The main reason is that these templates are defined using a specific namespace, DotNetNuke.Modules.*, which is fine in most cases, but what if you want to use your own namespace? Well you have to create a project, then search/replace all instances of that namespace, while not removing any DNN references at the same time. Customizing the project templates will allow you to define your own company namespace, email address, website, and even copyright information, in the template so that you do not have to search/replace every time you create a new project.

With the VSIX file approach that I use for developing the templates making changes to the templates is pretty easy, but I’ve discovered one big hurdle. If you try to customize the templates using that approach you need to change GUIDs in order for the projects to not conflict with my public release of the project.

To get around that, I’ve come up with a different recommendation for modifying the templates, and if you’re at all familiar with my templates from long ago, it is the same approach.

In order to accommodate for this I’ve put together a new release for the templates, labeled 2.1, that has a couple of updates. Check out Codeplex for those updates, below you will find the instructions for how to modify based on the 2.1 release.


How to Modify the Project Templates

Modifying the templates consists of making a change to the VSTEMPLATE file in each of the project templates, there are 4 templates, so you will need to go through this process 4 times if you want to have each template available, if you’re a C# shop though perhaps you simply want to modify the 2 C# templates and not the VB ones.

  1. Download the ZIP file for the template that you want to modify
  2. Extract the ZIP file’s contents into a folder
    1. You might need to unblock the ZIP file first by right clicking on the file
    2. Choose properties
    3. Choose Unblock
  3. Edit the *.vstemplate file with a text editor
  4. Modify the Name of the template to something other than “DotNetNuke 7 VB.Net Compiled Module”, perhaps use your company name, “ DNN7 VB.Net Compiled Module”
  5. Modify the CustomParameter values for image
    1. rootnamespace – The namespace of your project, something like Christoc.Modules., that will become Christoc.Modules.ProjectName (where ProjectName is provided when you create the project in Visual Studio)
    2. ownername – The name used for Copyright text in the projects, and also in the owner information of the DNN manifest during module installation
    3. owneremail – The email address listed in the DNN manifest file used during module installation
    4. ownerwebsite – The website listed in the DNN manifest file used during module installation
    5. devenvironmenturl – The URL of your development environment, only change if you are using something different.
  6. Rename the *.vstemplate file to use a new name, ex: Christoc-VB-Module.vstemplate
  7. Select all the files in the extracted template folder (press Control-A)
  8. Right click on the *.vstemplate file
    1. Choose Send To
    2. Compressed Zip File
    3. Copy the newly created ZIP file (file should have the same name as the VSTEMPLATE file just with a ZIP extension)
  9. In Windows go to your My Documents\Visual Studio 2012\Templates\ProjectTemplates\Visual Basic folder (or Visual C# if you are working with the C# templates)
  10. Create a new folder called DotNetNuke
  11. Paste the ZIP file copied in Step 8.iii into the newly created DotNetNuke folder
  12. Repeat the process for any additional templates you want to modify.
  13. Start Visual Studio 2012 (if you had it open already, close it and open again)
  14. Create a new project, choosing one of your newly created templates.

If you haven’t read the post from last week be sure to read it, it has lots of info on how to setup your development environment and other items associated with the templates.

This blog post is no longer being maintained, visit the Tutorial for customizing the module development templates.

Recent Comments

Comment Avatar
Hi Chris- Thanks for the instructions very useful indeed !. A quick question I downloaded and customised the v2.0 and I have been using it and works ok - I see that 2.1 is available from VS 2012 updates , if I install the update to 2.1 , do I have to do the customisation again? (will it overwrite my custom parameters). Also at the moment my temp files are in c:\my documents\VS 2012\Project Templates\Visual C#\ When updating the temp to 2.1 from VS where does it put the updated template? Thanks
Posted By: Atif Mir on Jan 2013
Comment Avatar
Atif, If you install the templates using the VSIX they don't go into the directories where you would put customize templates, so I don't think you run the risk of overwriting them. Though you likely would see the same title/template twice when creating a new project. That is why, when customizing the template, I suggest changing the template name in the VSTemplate file.
Posted By: Chris Hammond on Jan 2013
Comment Avatar
Hi Chris, I have followed the instruction however I am getting an Package Installation Error - "The project template has a reference to a missing Extension. Could not find an Extension with ID 'e48e838a-c708-4d43-b822-4d5de0d13eed'." Any ideas?
Posted By: Eric Ho on Feb 2013
Comment Avatar
Eric Ho, your message basically says that you don't have MSBuild Community Tasks (I think) What version of the templates are you working with?
Posted By: Chris Hammond on Feb 2013
Comment Avatar
Hi Chris, you are correct, I reinstalled MSBuild Community Tasks and its all working now. Thanks.
Posted By: Eric Ho on Feb 2013
Comment Avatar
Could not find an Extension with ID 'e48e838a-c708-4d43-b822-4 d5de0d13eed' What version of MSBuild Community Task works with the latest (as of 3/29/2013) version of DNN-VB-DAL2-Module? I Tried MSBuild.Community.Tasks.v1.4.0.42 but does not work.
Posted By: danny ching on Mar 2013
Comment Avatar
the MSBuildTasks.v1.4.0.45.msi version used in DNN-VB-DAL2-Module is no longer available on the web. can anyone please share this installer so i can compile the dotnetnuke module project?
Posted By: danny ching on Mar 2013
Comment Avatar
Danny, The templates work with the existing version of MSBuild and the version that ships with the template. Do you happen to not have NUGET installed?
Posted By: Christopher Hammond on Mar 2013
Comment Avatar
FYI - I had the same issue as did Eric Ho above (Project Template has reference to a missing extension...). Solution? Make sure that you Install the "DotNetNuke Project Templates" even if you plan to use customized templates. Go to Tools->Extensions and Updates in VS2012. Search the Online Gallery for "DotNetNuke" and install. My customized Project Templates (following Chris's instructions above) worked without the missing extension issue only AFTER installing the DNN Project Templates. Manual installation of MSBuild (Community Tasks) did NOT resolve the issue for me.
Posted By: Kurt Amstutz on Jun 2013

Add Comment

Please add your comment by filling out the field(s) below. Your comment may need to be approved before it becomes visible.
Enter your first name for display with the comment
Enter your last name for display with the comment.
Enter your comment here.
If you can't type DNNRocks in, you can't post, plain and simple.
Submit Comment Cancel

Chris Hammond

Chris Hammond is a father, husband, leader, software developer, photographer and car guy. Chris focuses on the latest in technology including artificial intelligence (AI) and has spent decades becoming an expert in ASP.NET and DotNetNuke (DNN) development. You will find a variety of posts relating to those topics here on the website. For more information check out the about Chris Hammond page.

Find me on Twitter, GitHub and LinkedIn.