Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set debug/run environment variable in Visual Studio 2010 C# project?

I have a C# project in Visual Studio 2010 and I wish to run/debug my application with a specific environment variable in place.

This strikes me as a feature that probably exists somewhere, but I can't find it despite some extensive searching. This question relates to 2008 and below and doesn't contain an answer that helps me. This question relates to the build process, not the act of debugging/running.

I appreciate a work-around would be to start my IDE with the environment variables in place, but I'd rather control this from the IDE. Is this possible?

like image 885
Duncan Jones Avatar asked Jun 25 '13 12:06

Duncan Jones


2 Answers

It's not as clean as setting it from outside the application being debugged, but you can add to the Main something like this (NB I'm a VB programmer):

#if (DEBUG)
    Environment.SetEnvironmentVariable("YourVar", "YourVal");
#endif
like image 198
Mark Hurd Avatar answered Oct 04 '22 23:10

Mark Hurd


This is possible in the C++ IDE, not the C# IDE. I'd guess it was omitted intentionally because C# has better ways to configure a program. Environment variables are awkward since they require an installer that tinkers with the user's system environment when the app is deployed. That's brittle, another installer can easily destroy that and they often do.

The C# way is to use an application setting. Project + Properties, Settings tab.

A possible alternative is to use a command line argument. You'll get it in your Main() method, you specify a value in the Project + Properties, Debug tab.

You can still get what you want with a trick that takes using the C++ IDE to start your program:

  • Add a new project to your solution and select the Visual C++, General, Makefile project template.
  • Click Finish right away, the wizard asks too many questions.
  • Right-click the added project, Properties, select the NMake node.
  • Edit the "Build Command Line" setting, and set it to "echo Done".
  • Edit the "Output" setting, set it to the full path of your C# executable.
  • Select the Debugging node, change the Debugger type to Managed Only.
  • And you'll see the one below that, what you want, edit the "Environment" setting.
  • Right-click the project again, pick "Set as Startup Project".
like image 4
Hans Passant Avatar answered Oct 05 '22 00:10

Hans Passant