hgs yükleme
My Cart (0)  |  My Orders  |  My Downloads  |  My Auction  |  My Account  |  Help

Login |Register        Search

Auto set package name while building dotnetnuke module

                Print      Add To Favorite     Add To Watch List     Contact Author

Creator: host   6/22/2013 3:35:01 AM    Author: Mitchel Sellers   Source: http://www.dotnetnuke.com/Resources/Blogs/cid/150080/Simplifying-DotNetNuke-Module-MSBuild-Packaging-With-Auto-Set-Package-Name.aspx   Views: 1797    0    0  
Module develop Msbuild dnn 7.x

DotNetNuke module development became a lot easier when it became easy to use MSBuild to simply build your project and get a nice install-able module package in the end.  I've been using this process for a number of years now, but there have always been those little things with the default templates that many have been distributing that just don't meet my needs 100%.  For example a few years back I blogged about a fix for Auto Packaging Multiple Modules.  This post shows a fix for one of my other biggest pet-peeves when it comes to the auto-package process and that comes from the determination of the 'PackageName' that is used to name the destination file.

The Default Process

Before I go into the fix for this I want to make sure to cover the current process for MSBuild to pick up on the PackageName.  In most of the templates being distributed today there are entries in the .csproj within a <PropertyGroup> that contain definitions for Extension, DNNFileName, PackageName, and MSBuildCommunityTasksPath.  

I'm perfectly fine with all items here except for package name.  I like to keep my package name consistent and typically it matches my root namespace, or the DLL name for the module.  Which is very hard to get right with a template, and if you want to change it down the road you have to open the .csproj in notepad.

The Automated Way

Amazingly it takes less than 1 minute to make this something that the build process can simply find on its own based on the Package Name defined in your .dnn manifest.  The following assumes you are using the most current DNN Manifest format.

First you want to simply delete the PackageName node from the .csproj in question.

Lastly, open up the Modulepackage.targets file that is inside of the "BuildScripts" folder.  You should see a node at the very top that is <XmlRead>.  Just after this node, add the following.

<XmlRead Prefix="n"
  <Output TaskParameter="Value" PropertyName="PackageName" />

This tells MSBuild that you want to read the value from the name attribute that is contained on the first package node, within the dotnetnuke/packages nodes.  Now, your module build process is dynamic.  If you update the package name within the manifest your package name automatically updates.

I know that this helps us save a lot of time in our builds, especially with new project setup.  Feel free to share your comments below.

Rating People: 45   Average Rating:     

     DnnModule.com is built to provide DNN quality modules and DNN skins, some of them are free, some not. We wish these stuffs (free or not ) can be useful to you.

     Besides that, we also provide a full range of professional services, ranging from web site build, seo, system management, administration, support, senior consultancy and security services. We act as if your development project or network was ours, with care and respect. We are not satisfied until it works the way you want it to, and we don't silently ignore found issues as somebody else's problem.