Click here to Skip to main content
15,120,078 members
Articles / Operating Systems / Windows
Posted 17 Feb 2009


20 bookmarked

Testing VS2005 Debug Version on a Non Development Machine

Rate me:
Please Sign up or sign in to vote.
4.29/5 (3 votes)
17 Feb 2009CPOL4 min read
Why it can't be done out-of-the-box under Visual Studio 2005 and how to solve it.

1. Overview

Ever had the need to test a debug version of your code on a clean non-dev machine, but failed to do so because the application crashes on startup?

In Visual Studio 2005 (I am not familiar with the situation in other versions), one cannot execute debug versions of compiled code1 on a non-dev machine2.
This happens due to that fact that Microsoft removed the debug version DLLs from its redistribution pack (though I'm not sure why they did it).

2. The Solution  

The common solution to the problem at hand is to install VS2005 on the test machine. It is done by many. But then again - that’s not really why you're reading this article, right?

Turns out Microsoft has a built-in solution to the problem. I found it to be well hidden to the naked eye. That's why I wrote this article.

2.1 Special Note

Before continuing, I would like to emphasize that this solution should be used for internal testing (on test machines) only.
Microsoft End User License Agreement (EULA) prohibits redistributing the debug DLLs to customers.

Now that we got the legal stuff covered, I'll let you in on the secret.
The way to enable debugging on a non-dev machine is to create a setup application that will deploy the debug DLLs to the machine. The setup application will come in a modest size (~8MB).

To install a VS2005 DVD or an 8MB setup?.. hmm..

2.2 The Steps for Creating the Setup Application  

  1. Create a new setup project under Visual Studio 2005 (File / New / Project / Other Project Types / Setup and Deployment).
  2. In the Solution Explorer, right click on the project’s name and select Properties.
  3. Set the Target Platform property value (e.g. x86).
    You may want to alter the Title, ProductName, etc. at this point.
  4. In the Solution Explorer, right click on the project’s name and select Add / Merge Module.
  5. From the list of modules, pick the ones that begin with Microsoft_VC80_Debug (the ones that begin with policy_8_0_Microsoft_VC80_Debug will be added as detected dependencies).

We're practically done. You may build your solution now.
I recommend building the release version of the setup program (no worries - it will still install the debug version DLLs :)).

All is nice. Nonetheless, I suggest the following enhancements.

2.2.1 Removing the Installation Folder Wizard Page 

The Installation Folder page lets the user select a destination folder for the setup files. However, since we're dealing with debug DLLs that will be copied to the system folder, this page is redundant and may be disposed of.
To do so:

  1. Left click the project’s name - an icons toolbar will appear at the top of the Solution Explorer window.
  2. Select the User Interface Editor - a tree with the setup pages will appear.
  3. Remove the Installation Folder node from both installation flavors.

2.2.2 Warning  Message

The User Interface Editor is already open. You may find it useful to put a nice warning message, stating that this application is designated for internal use only and may not be distributed outside company boundaries. Easy does it:

Right click the Welcome page, select Properties Window and update the CopyrightWarning as needed (you might want to alter the WelcomeText as well - up to you :)).

2.3. To Finalize

  • Compile the setup project.
  • Copy the resulting *.msi and setup.exe files to the target machine.
  • Install. 
  • Cross your fingers and run your debug version.

Worked for me!


In this part, I would like to officially inform you that exercising the so-noted suggestions is at your own risk and I take no responsibility for any corruption that may be introduced due to any of the above.
(*) 'Any corruption' includes (but is not limited to) breaking a fingernail due to a bad execution of fingers crossing (!)
Be warned!

Still.. Worked for me :)

1. My specific case is an MFC application with integrated .NET code (particularly - WinForms code involved) in both C++/CLI and C# DLLs.

2. By non-dev I mean a machine that doesn't have Visual Studio 2005 installed on it, e.g. lab machines, QA machines, etc. 


  • 17th February, 2009: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Software Developer (Senior)
Israel Israel
Developing software since 1994 (or so Smile | :) )

Comments and Discussions

QuestionGreat article to deploy a debug version Pin
Dave Devadas8-Oct-13 14:21
MemberDave Devadas8-Oct-13 14:21 
GeneralwellDone! ... and for VS2008 works too! Pin
MrCyber9-Nov-09 22:55
MemberMrCyber9-Nov-09 22:55 
GeneralAlternative suggestion Pin
adamhearn28-Feb-09 2:13
Memberadamhearn28-Feb-09 2:13 
GeneralRe: Alternative suggestion Pin
AVIDeveloper28-Feb-09 9:29
MemberAVIDeveloper28-Feb-09 9:29 
QuestionDo you know if a similar technique is usable with Visual Studio 2008 as well? Pin
Mike Diack17-Feb-09 22:52
MemberMike Diack17-Feb-09 22:52 
AnswerRe: Do you know if a similar technique is usable with Visual Studio 2008 as well? Pin
AVIDeveloper18-Feb-09 1:39
MemberAVIDeveloper18-Feb-09 1:39 
GeneralYou can (often) static link instead Pin
Leo Davidson17-Feb-09 16:01
MemberLeo Davidson17-Feb-09 16:01 
It might be easier to simply static-link to the runtime instead of using the DLL version. Then you don't have to copy anything over.

(If you've got DLLs in your project and you allocate memory in one module and free it in another then static linking can cause problems but otherwise it's a lot less hassle at the cost of a bit more size per module.)
GeneralRe: You can (often) static link instead Pin
AVIDeveloper17-Feb-09 22:30
MemberAVIDeveloper17-Feb-09 22:30 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.