Duncan Jones
Duncan Jones

Reputation: 69389

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?

Upvotes: 16

Views: 14140

Answers (3)

John Dyer
John Dyer

Reputation: 2368

For C# debugging with environment variables under Visual Studio 2013, what I do is open up the "Developer Command Prompt for VS2013" in the start menu under Visual Studio. From the command prompt I set the environment vars that I want and then run "devenv.exe" to launch Studio. Next open a solution and start debugging.

Keep in mind that if you want to change your environment vars you will need to stop debugging, quit visual studio and then tweak the vars in that open command prompt, then start again. Remember that an environment moves forward as a process (CMD.EXE) launches the next (DEVENV.EXE) and then the next (YourApp). Changes at the very beginning aren't moved forward, you need to start the chain over.

Upvotes: 2

Hans Passant
Hans Passant

Reputation: 942197

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".

Upvotes: 4

Mark Hurd
Mark Hurd

Reputation: 10931

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

Upvotes: 12

Related Questions