Deploying websites with WiX

I posted back in 2010 about how to get WiX to correctly deploy a website using harvesting. It was a rather clunky solution that required changes to your development machine (and the same for everyone in your team) as well as any build infrastructure you are running. I have now discovered a much cleaner solution using harvest transforms (tested using WiX 3.7). As a recap, harvesting pulls files from the project reference compilation into the MSI and puts them into a single output directory. This... [More]

Configuring a TFS 2010 build agent to compile SharePoint 2010 projects

I’ve been doing several TFS consulting gigs over the last couple of years. The one thing that keeps popping up is the requirement to build several types of platforms using TeamBuild/TFSBuild. My preference is to isolate build agents and their customisations. This means for example that I have a mix of build agents like the following: Standard (full VS install + any common additions - WiX for example) SharePoint BizTalk Tagging the build agents and configuring the build definitions fo... [More]

Creating a simple bootstrapper - Project template

The previous post looked at a proof of concept for building a simple bootstrapper solution to elevate the execution of an MSI package. This post will outline how this proof of concept was converted into a VSIX project template. Using a project template was going to be the best way to achieve portability and reusability of this bootstrapper concept. The initial attempts at producing a project template were to use the inbuilt File –> Export template function in [VS] on the proof of concept pro... [More]

Creating a simple bootstrapper - Proof of concept

The previous post discussed the pain points of putting validation into the UI sequence of an MSI package that require elevation. The outcome of some research was that a bootstrapper was the best way to get around this. To recap, my design requirements for a bootstrapper solution were: Seamless [VS] integration and compilation Bootstrapper must be completely self-contained Bootstrapper must be quiet (no UI) and simply execute the MSI package Automatically elevate the packaged MSI... [More]

Creating a simple bootstrapper - Introduction

Last month I was creating a WiX setup package to deploy a new system. In the past we have typically required the user to execute the MSI from the command line and provided all the MSI arguments required by the package. We have also played with transform packages to achieve the same result. I am not a fan of either of these methods and want to push configuration options into the installer UI as a way of minimising user error while maintaining flexibility. I came across the excellent MsiExt proj... [More]

Executing build tasks without a build server – Example scenario

My last few posts have described the process of building an application that can manage custom build tasks without the availability of a full TFS environment (here, here and here). This post will look at how I use this application and all its tasks to manage the product version of a [VS] solution. The product I originally wrote BuildTaskExecutor (BTE) for is the .Net port of my old VB6 Switch program which is now hosted out on Codeplex (here). The build tasks I want to execute when this solutio... [More]

Executing build tasks without a build server – In action

The previous post provided the implementation of the BTE application. It described how the implementation of BTE is able to satisfy the original design requirements by providing an extensible task execution model. The following are some examples of BTE running on the command line. I am using a batch file in order to shorten BuildTaskExecutor.exe down to bte. 1) Executing BTE without arguments 2) Executing the help task 3) Executing the help task for a specific task name (or alias in this case)... [More]

Executing build tasks without a build server – Implementation

My previous post outlines my design requirements for a set of build task actions. I want to execute these tasks for my personal projects that do not have the backing of a fully functional TFS deployment. This post will look at how to implement these requirements using a console application. Neovolve.BuildTaskExecutor (or BTE) is the application that will execute specific tasks based on command line parameters. It implements MEF for the extensibility support so that additional tasks can be added... [More]

Executing build tasks without a build server – Design

At work we run TFS2010 with build controllers, build agents and lab management. I have customised the build workflow so that we can get a lot more functionality out of the automated build process. Some of these customisations are things like: Finding the product version number Incrementing the product version number Updating the build name with the new product version Updating files prior to compilation Updating files after compilation Building Sandcastle documentation Deploying MSIs to remove ... [More]

Full support for custom types in TFS Build 2010 build definition editor

I have been putting together a customised build process with TFS Build 2010. Several parts of the functionality added to the build process involve custom types that are used as arguments for the build definition. Deploy and configuration update information are some examples of this. I wanted to get the same designer experience out of the Process tab property grid that is available for properties like the test list definition. The Automated Tests property seen here has a set of sub-items for ... [More]
Rory Primrose | .Net

TechEd - Morning of Day 1

I had a early start this morning, leaving Canberra at 4:30am in the vain hope of making it to the keynote address at TechEd in Sydney this year. My perfect plan was foiled by traffic on the M5 making me get to the conference at 9:30 rather than the intended 8:30. After checking in, I headed over to my first two sessions. Introduction to the .NET Framework 3.0 and Windows Communication Foundation: Introduction, both of which were presented by Payam Shodjai. These were fantastic sessions and gave ... [More]

TechEd tomorrow

I'll be driving up to Sydney first thing tomorrow morning. I will hopefully get there for the keynote address. If you are going to be at TechEd this year, come over and have a chat. I'll be in the WCF corner for the "ask the experts" bash tomorrow night. I should look reasonably similar to this:

Do they ever look like you thought?

I was doing a few things with a local radio station when I was a teenager and I saw a comic in the broadcast room. I was displaying a child being comforted by his mother after finding out what the radio announcer looked like. I never thought about it until then, but it is interesting how we create some kind of mental picture or impression regarding what well known people look like when we have never seen them before. I am looking forward to meeting Scott Guthrie at TechEd, but do I know what he ... [More]

Bernard, who I am looking forward to meeting at TechEd this week, just posted his speed results. is a really cool idea and a great example of how a good UI makes a great idea even better. I obviously don't work where Bernie does though.

EDM in ADO.Net vNext

I just read this post from the ADO.Net team. Looks like there is going support for entity creation (Entity Data Model - EDM) based on a database schema in the next ADO.Net release. There is nothing more tedious than manually building entities from a schema. Although there are lots of O/R mapping tools around to do this for you, I haven't been happy with the freeware applications available. It is great news that this should find its way into Visual Studio and the framework.

Kingston 1.0

Kingston is a little utility that hosts an IE browser and allows you to provide a different user-agent with the browsers requests to web servers. This is great if you need to test the output of a web server based on a specific browser type. Download: Kingston 1.0 Setup.msi (495.50 kb)


I had seen my team leader use tool a few months ago that if you gave it Xml and an XPath query, it would highlight the nodes that would be selected. XPathmania is a tool that I have just come across that will do exactly that, but as an addon to the VS IDE. Very cool.

Ever heard of Script#?

I hadn't heard of Script#, so when I saw it being referred to in one of Nikhil Kothari's recent posts, I got a little curious. The Script# compiler is a C# compiler that generates JavaScript as its output instead of IL. A key goal of the compiler to produce readable JavaScript (as if you had authored it by hand), and would be comfortable deploying into real apps. Hence the translation works from C# source directly into JavaScript without an intermediate IL layer. The compiler can also produce... [More]

First SandCastle CTP released

I posted recently about SandCastle. The first CTP of SandCastle has been released and it also has a blog. On a sadder note, NDoc has officially died under very unfortunate circumstances.

Is it hard to go to VS2005 from VS2003 or earlier?

I have heard this question a bit recently. I am a little surprised that people are still only just starting to look at VS2005, but I digress already. There isn't a simple answer to this other than to say that, yes, there are changes and you will have to learn new stuff. I think most people aren't thinking ahead when they ask this question. What happens when Orcas comes out? I think that making a jump from VS2003 (or earlier) to Orcas is really going to hurt. Developers would benefit from getti... [More]