Visual Studio Post-Build, Pre-Build Macros

by Sam Allen - Updated November 27, 2009

You need to use post-build and pre-build macros in Microsoft Visual Studio 2008. You may have two projects that rely on each other but are separate. Write a macro to copy files from one project to another after the first one is built. Here we see an example of using build macros with a DLL in Visual Studio.

Visual Studio pre-build macro

Macros in Visual Studio 2008

This approach offers one automated solution to making the two projects work together, at least in a primitive manner. We will copy the compiled DLL to the C# solution's directory. We will use the following command on the post-build event in Visual Studio.

copy "{path1}DLLName.dll" "{path2}DLLName.dll"

Syntax notes. The words including the quotes are actual paths, and they are DOS paths, so they use that funny "\" character. This code runs whenever you build the DLL project. However, let's look at a slightly different solution that is probably a bit better. Here is a command in the pre-build event.

copy "{path1}DLLName.dll" "$(ProjectDir)DLLName.dll"

Explanation. Visual Studio 2008 macros are essentially environment variables contained within parentheses, preceded by the $ symbol—much like Perl. The green italics in the examples must be replaced by you. You can add a macro to a build command by clicking on its name and clicking insert. Next are a couple example tokens.

$(ProjectDir)
$(TargetFileName)

Summary

Here we looked at an example post-build event in the Visual Studio integrated development environment. One thing you can use pre-build and post-build events for is copying DLLs to different solutions at build time. This can automate some interactions between different projects. Here we saw a way to use these macros with a DLL after building a project.

(Do not copy this page.)

Dot Net Perls | Search
Visual Studio | Settings.settings in Visual Studio | Visual Studio 2008 Review | Visual Studio Debugging Tutorial | Visual Studio Tab Options | Visual Studio TODO Comments
C# | Obsolete Attribute | True and False | Gradient Tips | Catch Examples
© 2010 Sam Allen. All rights reserved.
Dot Net Perls | Sam Allen