UppercuT - Automated Builds - UppercuT.config

Recently I posted about UppercuT, the insanely easy to use build framework. There are so many things you can do with UppercuT, that it may make your life easier.

We decided to make it even easier to use UppercuT by using a convention most people in the .NET world understand, the .config file.  This replaces the build.settings.bat file for those of you who were using it.

All you need to do now is navigate to the Settings folder and open the UppercuT.config file in your favorite editor.

Get Building Fast

Here are the three questions most people need to answer.

<property name="project.name" value="__SOLUTION_NAME_WITHOUT_SLN_EXTENSION__" overwrite="false" />
<property name="path_to_solution" value="." overwrite="false" />
<property name="repository.path" value="__REPOSITORY_PATH__" overwrite="false" />
<property name="company.name" value="__COMPANY_NAME__" overwrite="false" />

becomes

<property name="project.name" value="UppercuT" overwrite="false" />
<property name="path_to_solution" value="." overwrite="false" />
<property name="repository.path" value="http://uppercut.googlecode.com/svn/" overwrite="false" />
<property name="company.name" value="FerventCoder Software and ACuriousMind Software" overwrite="false" />

My solution name is uppercut.sln, so I include it as the project name without the .sln extension. The repository path is not down to a trunk or a branch, but at the very top level of the repository.  The company is either a company you work for or your own personal company if you are open source.

An Explanation of the Full Configuration

Let's talk about each property in the configuration:

<?xml version="1.0" encoding="utf-8" ?> <project name="BuildSettings"> <!-- Project UppercuT - http://uppercut.googlecode.com --> <!-- Learn how to edit this file at http://uppercut.pbwiki.com --> <!-- PROJECT VARIABLES --> <property name="project.name" value="__SOLUTION_NAME_WITHOUT_SLN_EXTENSION__" overwrite="false" /> <property name="path_to_solution" value="." overwrite="false" /> <property name="repository.path" value="__REPOSITORY_PATH__" overwrite="false" /> <property name="company.name" value="__COMPANY_NAME__" overwrite="false" /> <property name="dirs.db.project" value="__DATABASE_FOLDER_NAME__" overwrite="false" />     <property name="dirs.report.project" value="__REPORT_PROJECT_FOLDER__" overwrite="false" />
    <property name="dirs.documentation" value="docs" overwrite="false"
/>
    <property name="app.drop.folder" value="app" overwrite="false"
/>
<!-- FRAMEWORKS --> <!-- microsoft.framework: net-1.1,net-2.0,net-3.5 --> <property name="microsoft.framework" value="net-3.5" overwrite="false" /> <!-- microsoft.framework: net-1.1,net-2.0,net-3.5 --> <!-- language.short: vb,cs --> <property name="language.short" value="cs" overwrite="false" /> <!-- test.framework: mbunit, nunit --> <property name="test.framework" value="mbunit" overwrite="false" /> <!-- source_control_type: svn, vss, tfs, vault, git --> <property name="source_control_type" value="svn" overwrite="false" /> <!-- ASSEMBLY VARIABLES --> <property name="version.major" value="0" overwrite="false" /> <property name="version.minor" value="0" overwrite="false" /> <!-- partially trusted callers doesn't set correctly with assembly generator - Leave false for now--> <property name="allow.partially_trusted_callers" value="false" overwrite="false" /> <!-- EXTERNAL TOOLS --> <!-- To not use the tool, change to a location that doesn't exist --> <property name="app.ncover" value="..\..\lib\tools\NCover\NCover.Console.exe" overwrite="false" /> <property name="app.ncover_explorer" value="..\..\lib\tools\NCover\NCoverExplorer.Console.exe" overwrite="false" /> <property name="app.ncover.tester" value="..\..\lib\references\MbUnit\MbUnit.Cons.exe" overwrite="false" /> <!--<property name="app.ncover.tester" value="..\..\lib\references\NUnit\nunit-console.exe" overwrite="false" />--> <property name="app.ndepend" value="C:\Program Files\NDepend\NDepend.Console.exe" overwrite="false" /> </project>

  • project.name = This is your solution file name (minus the .sln). This is also used in quite a few other places like with NCover and the assembly file.
  • path_to_solution = This is the RELATIVE PATH to the folder your solution file is in. For most people this might be src. This is used to locate your solution file and also used for where to put the assembly file (i.e. SolutionVersion.cs).
  • respository.path = This is the path to the top level of your repository. Not to a trunk or a branch. This is used to attempt to get revision information.
  • company.name = This is the name of your company, the company you work for, or something else. This is currently used as part of the assembly file.
  • dirs.db.project = This is the folder name of where you keep your database scripts. Some people keep them in a folder named db. This is only used during packaging to bring the folder into the code_drop for deployment. If you have more than one, you need to use custom build scripts.
  • dirs.report.project = This is the folder name where you keep your reports. This is only used during packaging to bring the folder into the code_drop for deployment. If you have more than one, you will need to use custom build scripts.
  • dirs.documentation = This is the top level folder you keep your documentation in. This is used during building to bring items to the code_drop folder.
  • app.drop.folder = This is the name of the folder your application drops into after a build.
  • microsoft.framework = This is the version of the Microsoft Framework you are using. This is used during compile.
  • language.short = What language are you building in? Valid values are vb or cs. Language is used only to determine how to output the assembly file (i.e SolutionVersion.vb or SolutionVersion.cs).
  • test.framework = What test framework do you use? This is used to determine how to run your application's tests. Currently we only support MbUnit and NUnit. You are welcome to submit a patch.
  • source_control_type = What kind of source control do you use? This is used to determine how to get revision/version information. Currently we only get version information if your source control type is svn.
  • version.major = In versioning your application, this is 1.x.x.x. This is used only when building the assembly file.
  • version.minor = In versioning your application, this is x.1.x.x. This is used only when building the assembly file.
  • app.ncover = This is the relative path (from the BuildScripts\analyzers folder) to where you keep the reference to NCover.Console.exe. The last free version of NCover we include with UppercuT. This is used during the NCover build. If the location is non-existent, UppercuT moves on to the next build step.
  • app.ncover.explorer = This is the relative path (from the BuildScripts\analyzers folder) to where you keep the reference to NCoverExplorer.Console.exe. The last free version of NCover we include with UppercuT. This is used during the NCover build. If the location is non-existent and the app.ncover location exists, UppercuT will throw a non-fatal error and move on.
  • app.ncover.tester = This is the relative path (from the BuildScripts\analyzers folder) to where you keep the reference to the testing framework's console runner. This is used during the NCover build. If the location is non-existent and the app.ncover location exists, UppercuT will throw a non-fatal error and move on.
  • app.nepend = This is the path to NDepend.Console.exe. NDepend is not a free tool, but it is very valuable in determining code quality. Because it is not free, we can not include it in the framework. But we do provide the tools to leverage it if you do have a license for it. If the location is non-existent, UppercuT moves on to the next build step.

With this knowledge you shall build.

kick it on DotNetKicks.com

Print | posted @ Sunday, May 17, 2009 5:29 PM

Comments on this entry:

Gravatar # re: UppercuT - Automated Builds - UppercuT.config
by Mr. Hericus at 5/19/2009 10:50 AM

Cool product! I love looking at new automated build systems. Any plans for a GUI to sit on top of the config files so that the user doesn't have to manually edit them?
Gravatar # re: UppercuT - Automated Builds - UppercuT.config
by dru Sellers at 5/19/2009 9:20 PM

you should put all three fields that have to be changed together, instead of having two together and one not. maybe?
Gravatar # re: UppercuT - Automated Builds - UppercuT.config
by Robz at 5/20/2009 8:36 AM

@dru: All three fields are at the top of the file now. I moved company name awhile back.
Gravatar # re: UppercuT - Automated Builds - UppercuT.config
by Robz at 5/20/2009 8:40 AM

@Mr. Hericus: Thanks! It's possible to have a GUI, but that is a few releases away. The idea behind UppercuT is to only have to edit this one file to get the goodness of Automated Builds.
Comments have been closed on this topic.