Copying project dependencies using Visual Studio

I used to only use NAnt to copy dependencies around a project, due to me being familiar with it as well as Nant having many other useful features. However I wondered the other day whether there was anything more simple and quicker to set up than going the whole hog and using Nant. Reason being – I’ve found that I do a lot of smaller projects that don’t have the need for the lengthy Nant installation and setup.

I guess up until this point, I had never really looked in Visual Studio for this functionality. Any way, cutting to the chase:

Right click your main project that you want copying from, select properties. Then select the Build Events Tab. In the Pre-build event command line throw in something like below to get your copy going.

copy "$(ProjectDir)Web.config" "$(SolutionDir)Move.Tests\bin\Debug\Move.Tests.dll.config"

If you are unsure as to your options, click the Edit Pre-build button and hit the macro button. It will show you the tokenized values for common build properties such as $(ProjectDir).


Useful tools I use as a software developer

UPDATED – 22/05/09: Added Reflector

Beyond Compare

Picture of Beyond Compare

Website: Beyond Compare
What it is: A file diff tool.

Beyond Compare is probably my favourite day to day tool and has given me an astonishing reduction in breakages when deploying code across systems. There are other free diff tools out there, however after evaluating most of them this is my favourite due to its intuitive design, colourful, easy to distinguish interface.

There is a small cost for the software but I think it is worth it.

See also: (Free) WinMerge


Picture of Notepad++

Website: Notepad++
What it is: A free text/source code editor

I like Notepad++ because it is the complete opposite to most of the IDE’s and editors that I use, in that the application is not sucking up all of your RAM and grinding to a halt, when I quickly want to modify a text or HTML file. It makes a nice alternative to the usual Windows Notepad application as it has syntax highlighting for example and useful features such as regular expression based finds. I’ve recently taken to using Notepad++ for a recent PHP client project.

Color Pic

Picture of Notepad++

Website: Color Pic
What it is: A free colour picker, and palette

How many times have you needed to open Photoshop to get at the colour picker tool? For me – lots. I found this program helpful as, again, it does not gobble up RAM like Photoshop and is useful for storing a palette of colours indefinitely. I use this tool a lot for finding out what colour something is on a page or for Web Development work.


Picture of Notepad++

Website: FreeMind
What it is: An open source Mind Mapping software

I find it very useful at a begging of a personal project to brainstorm everything I want to see in an application. It often becomes quite hard to document and visualize due to the excess of information. Mind Maps can be a really good canvas to paint your ideas on to.

I love how fluid the interaction with this application is. You can draft personalized maps very quickly and relatively intuitively. You can also save them in pdf or image format so others can read.

It’s not something you use lots but can really help when starting off on a project.

Subversion & Tortoise SVN

Picture of Notepad++

Website: Subversion, Tortoise SVN
What it is: Version control

I’ve used 3 version control systems in my life and this is my favourite by far. In fact when I look back to the days of Visual Source Safe – I shudder, it was that bad. I like Subversion because of its really well thought out logic and relatively low learning curve.

Subversion itself is the version control system, which comes with natively with a command line interface. I, like many people also install Tortoise SVN which integrates into windows so you can see the state of each file. Version control then becomes a right click, command operation. Easy!

See also: My article on free Subversion hosting

Firefox & Firebug

Picture of Firebug

Website: Firefox, FireBug
What it is: A tool for analysing web page structure, CSS and Javascript debugging

Firebug is a MUST HAVE for web development. Firebug is a Firefox plugin that allows you to visually inspect the web page you are looking at. You can look through the DOM, inspect elements, change HTML and CSS on the fly, watch HTTP headers and debug Javascript. It makes website debugging a lot easier having all these powerful tools in one place. It also saves you having to make changes to your underlying code, building and then refreshing.


Picture of 7-zip

Website: 7-Zip
What it is: A file compression + extraction tool

Throw away WinZip and WinRar and replace with this open source solution.

IIS Admin

Picture of IIS Admin

Website: IIS Admin
What it is: A tool for Windows 2000/XP that allows you to create multiple sites under IIS

I still use this tool a lot as it allows me to create multiple seperate website entities in IIS. This tool is not useful for any one using IIS 7 as it comes natively with this missing functionality.


Picture of Beyond Compare

Website: Twihrl, Twitter
What it is: Twihrl is a client for Twitter, based upon the Adobe Air platform. In case you are behind the times and don’t know what Twitter is – it is a social networking platform where users can post short messages or statuses. A bit like Facebook’s status message.

Why do I think it is a useful tool? Purely because it is a good educational/information tool. If you subscribe to people that “Tweet” (updating of their message), you can passively learn useful information.


Website: Reflector
What it is: Reflector is a tool that will disassemble an assembly so that you can read through the source code (as long as it is not obfuscated). I use it a lot for looking through third party code, or perhaps an old .dll that I may have built, but lost the source code for.

Free hosted Subversion

I was recently looking for some free Subversion hosting when I stumbled upon Unfuddle

It is a great FREE service that offers Subversion and Bug Tracking. The free account comes with 200MB of storage, one user account and the ability to have 1 active project.¬†It works great for me being a single developer and I manage to get past the issue of being capped at one project max by using branches. I’m pretty sure I’ll burn up that 200MB space quick enough mind you.

Oh – you can also browse your repository via the web and get updates on changes to the repository.