Creating Visual Studio 2005 Macros

Posted on 2006-10-23
Last Modified: 2010-08-05
I'd think that this should be simple but I can't seem to find any documentation on how to do this. There are some samples for relatively sophisticated macros. I know that I can record macros as well. However, I need to create some path macros for VS 2005 that I can use in my build process but I don't see how to record just a path this way.

When you look at project properties and edit (for instance) the Command Line in the Post-Build Events you can click on the "Macros>>" button and get a selection of macros that are used in the command line, like $(InputPath). Most of these look like pretty simple replacements for inserting pathnames or module names, etc.

I use this to copy my build files to the actual deployment directory after building, for example:

C:\Program Files\Client\ClientApp\Components (for release builds)

C:\Program Files\Client\Debug\ClientApp\Components (for debug builds)

However, right now I have to hard-code these paths into the command line. I would like to create my own macros, specifically for these deployment directory path names, to use in my post-build command line. I need macros for the  something like "DeployDir" or "DebugDeployDir" that could be used instead of the hard-coded paths -- like $(DeployDir). It would be perfect if the macro itself could differentiate between debug and release builds itself and modify the path variable.

And I would need to distribute these macros to all of our developers working on the project. Are these macros (like InputName, InputPath, IntDir, etc.) recorded in a file somewhere that I could look at?

This is pretty urgent, as well.

Question by:jimwasson
LVL 48

Accepted Solution

AlexFM earned 500 total points
ID: 17794011
I would try to solve this problem using environment variables and batch files. Consider the following post-build command:

CopyFiles.bat $(ConfigurationName)

Inside of CopyFiles.bat you can test first parameter (Debug or Release) and copy files to one of two output directories using environment variables, for example, %DebugDeploymentDir% and %ReleaseDeploymentDir%. To distribute evvironment variables to all developer computers you can make .reg file which adds these variables to the Registry.

Author Comment

ID: 17795744
That's a good suggestion Alex. I may have to do that if I can't figure out how to build and use the VS macros. I really do need to use a macro that I can make somewhat cleverer, though. My project includes about 10 executables and maybe 30 dlls which get deployed into about 8 to 10 subdirectories. I may end up having to drastically simplify the deployment structure, though.

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Visual Studio SubForm 8 314
Cchar * Concating 7 92
Help formatting a Money value. 2 90
Losing latter half of command line in Visual Studio C++ online program 10 80
The following diagram presents a diamond class hierarchy: As depicted, diamond inheritance denotes when two classes (e.g., CDerived1 and CDerived2), separately extending a common base class (e.g., CBase), are sub classed simultaneously by a fourt…
In Easy String Encryption Using CryptoAPI in C++ ( I described how to encrypt text and recommended that the encrypted text be stored as a series of hexadecimal digits -- because cyphertext may…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question